查找().populate()与mongoose中的查找().find()比较

查找().populate()与mongoose中的查找().find()比较,mongoose,mongoose-schema,mongoose-populate,Mongoose,Mongoose Schema,Mongoose Populate,我想知道,在猫鼬ORM中使用populate和find方法有什么区别 假设我有两个模型。1.用户和2.发布 mongoose.model('User', mongoose.Schema({ user : {type: String}, posts : [type: mongoose.SchemaTypes.ObjectId, ref: 'Post'}] })) 以及后模式 mongoose.model('Post', mongoose.Schema({ user : {type: mongoo

我想知道,在猫鼬ORM中使用populate和find方法有什么区别

假设我有两个模型。1.用户和2.发布

mongoose.model('User', mongoose.Schema({
user : {type: String},
posts : [type: mongoose.SchemaTypes.ObjectId, ref: 'Post'}]
}))
以及后模式

mongoose.model('Post', mongoose.Schema({
user : {type: mongoose.SchemaTypes.ObjectId, ref: 'User'},
title : {type: String},
body : {type:String}
}))
我想由用户生成所有帖子。 我可以这样做:

User.findById({_id:req._id}).then(currentUser => Post.find({user._id: currentUser}) ........
或:


哪一个是正确的方法?这两者的区别是什么

Mongoose populate并不神奇,因为它仍然是客户端查找而不是$lookup,后者是服务器端查找

对于单个findById查询,通过比较这两条语句,您可能看不到任何好处

当您使用诸如find().populate()之类的查询时,您可以看到.populate的优点,其中返回了多条记录

User.findById({_id:req._id}).populate('posts')