📌  相关文章
📜  在查询中获取普通对象而不是 Mongoose 文档? - Javascript(1)

📅  最后修改于: 2023-12-03 14:51:29.511000             🧑  作者: Mango

在查询中获取普通对象而不是 Mongoose 文档? - Javascript

在使用Mongoose进行MongoDB操作时,有时候我们需要在查询结果中返回普通对象而不是Mongoose文档对象。这可以通过使用Mongoose的lean()方法来实现。

Mongoose 的lean()方法

lean()是Mongoose的方法,它允许从MongoDB中查询数据并返回普通JavaScript 对象。它消除了查询结果中的大部分Mongoose元数据,从而提高了查询性能。

User.find().lean().exec(function (err, docs) {
  // `docs` is a plain JavaScript object
});

上面的代码返回的是一个普通JavaScript对象,而不是Mongoose文档对象。lean()方法在查询速度和内存消耗方面也比Mongoose文档对象更有效率。

注意事项

由于lean()方法将结果转换为普通JavaScript对象,它会导致以下限制:

  • populate()不能用于查询结果,因为无法将普通对象传递给其它查询。
  • 您无法直接调用模型实例的save()方法,在此情况下,应该使用MongoDB的updateOne()updateMany()方法。
  • 您无法再查询结果上使用 Mongoose 的实例方法
总结

当您想在查询结果中返回普通对象,并且可以接受一些限制时,lean()是非常有用的。 但是,请注意,如果您需要在查询结果上执行Mongoose实例方法或使用populate(),则不能使用此方法。