Mongodb Mongoose如何在填充字段上进行筛选
我有订单和用户,我想通过Mongoose Populate或其他方式通过用户电话号码查找订单,我该怎么做 订单(\u id、项目、用户\u id) 用户(id、电子邮件、电话) const orders=wait Order.find({})。填充({path:'user',select:'phone'}) 我想要这样的东西,在那里(user.phone='xxxxxx')我无法理解Mongodb Mongoose如何在填充字段上进行筛选,mongodb,mongoose,mongodb-query,mongoose-populate,Mongodb,Mongoose,Mongodb Query,Mongoose Populate,我有订单和用户,我想通过Mongoose Populate或其他方式通过用户电话号码查找订单,我该怎么做 订单(\u id、项目、用户\u id) 用户(id、电子邮件、电话) const orders=wait Order.find({})。填充({path:'user',select:'phone'}) 我想要这样的东西,在那里(user.phone='xxxxxx')我无法理解 谢谢一个更简单的解决方案 首先从具有给定电话号码的用户集合中查找UserInstance db.user.fin
谢谢一个更简单的解决方案 首先从具有给定电话号码的用户集合中查找UserInstance
db.user.find({phone: PhoneNumber})
然后从该用户的订单集合中查找订单实例
db.order.find({user_id: userInstance._id})
为什么不使用Populate
填充是Mongoose库方法,而不是本机MongoDb方法。要使用Populate,您必须定义模式
因此
var user = Schema({
_id: Schema.Types.ObjectId,
email: String,
phone: Number,
});
var order = Schema({
_id: Schema.Types.ObjectId,
item: String,
user_id: { type: Schema.Types.ObjectId, ref: 'user' }
});
如果您这样定义模型,然后使用“填充”查找用户订单。然后发生以下步骤:
mongoDB自带的$lookup也会出现同样的情况。请注意在集合上使用$lookup,而不是尝试在填充时进行筛选,如下所示: