Mongodb 使用精益猫鼬和回调

Mongodb 使用精益猫鼬和回调,mongodb,mongoose,callback,Mongodb,Mongoose,Callback,我试图在mongoDB查询中使用lean,但我面临的问题是我没有使用.exec()方法。我使用回调实现,如下所示 model.find({user_id: mobile_no }, {'_id':0, 'type':1}, {sort: {dateTime: -1}, skip: page*page_size, limit: page_size + 1}, function(err, docs) { if (err) { } else {

我试图在mongoDB查询中使用
lean
,但我面临的问题是我没有使用
.exec()
方法。我使用回调实现,如下所示

model.find({user_id: mobile_no }, {'_id':0, 'type':1}, {sort: {dateTime: -1}, skip: page*page_size, limit: page_size + 1}, function(err, docs) {
     if (err) {
                
     } else {

     }
});
.lean().exec()
但在大多数文档中,每个人都使用
lean
.exec()
如下所示

model.find({user_id: mobile_no }, {'_id':0, 'type':1}, {sort: {dateTime: -1}, skip: page*page_size, limit: page_size + 1}, function(err, docs) {
     if (err) {
                
     } else {

     }
});
.lean().exec()

谁能告诉我如何使用回调实现使用
lean
,或者我必须使用
.exec()
实现才能使用它。

您可以同时使用
.exec()
和回调:

model.find(...).lean().exec(function(err, docs) {
  ...
});
另请参见,其中一个示例也是这样做的

model.find({user_id: mobile_no }, {'_id':0, 'type':1}, {sort: {dateTime: -1}, skip: page*page_size, limit: page_size + 1}, function(err, docs) {
     if (err) {

     } else {

     }
}).lean();

您必须在查询结束时编写.lean():3

是的,但是由于我没有使用
exec()
,我可以不使用
exec()
而使用
lean()
,因为否则我将不得不因为exec()而到处更改代码。我不明白:你已经必须到处更改代码,因为你想使用
.lean()
,那么添加一个额外的
.exec()
有什么问题吗?就像我的回答所说的:你仍然可以使用
.exec()
,如果你不想,你不必使用承诺。好的,谢谢,我只想使用我的语法,没有任何额外的问题,谢谢。实际上,查询所用的时间还是一样的,没有明显的区别??你能告诉我为什么会这样吗?我猜你的查询速度太慢了,
lean
无法解决这个问题(它只跳过了Mongoose将MongoDB结果转换为Mongoose文档的步骤)。