De la documentación:
Las consultas de mangosta no son promesas. Tienen un .then() función para coand async/await como conveniencia. Sin embargo, a diferencia de las promesas, llamar a .then() de una consulta puede ejecutar la consulta varias veces.
Entonces, a diferencia de una promesa real, si llamas a then() varias veces en la consulta, en realidad ejecuta la consulta (o actualiza) varias veces.
Si desea una promesa real, llame a exec() en la consulta.
let promise = Test.findOne({}).exec();