我成功地在第一个模型中使用find和搜索关键字进行深度填充,但现在我想通过密钥找到由深填充生成的子对象。
我有三种型号:产品,类别和事件
我想通过事件模型中的 e_fk_club_id 找到我的产品
我尝试了两种解决方案,但他们没有工作
查找中的第一个解决方案:
model.find({'categories.events.e_fk_club_id':id})`
匹配的第二个解决方案:
`$match : { e_fk_club_id : id }`
这些是我的模特
product.js
var ProductSchema = new mongoose.Schema({
p_id: Number,
p_name: String,
p_fk_category: {type: mongoose.Schema.Types.ObjectId, ref: 'categories'},
}
, {collection: 'products'});
module.exports = mongoose.model('products', ProductSchema);
Category.js
var CategorySchema = new mongoose.Schema({
c_id: Number,
c_name: String,
c_fk_event: {type: mongoose.Schema.Types.ObjectId, ref: 'events'},
}
, {collection: 'categories'});
module.exports = mongoose.model('categories', CategorySchema);
Event.js
var EventSchema = new mongoose.Schema({
e_id: Number,
e_name: String,
e_fk_club_id: Number,
}
, {collection: 'events'});
module.exports = mongoose.model('events', EventSchema);
这是我尝试获取数据的代码:
getProductsByClub:function (id, callback){
var model = require("Product");
//model
model .find({'categories.events.e_fk_club_id':id})
.populate({
path:'p_fk_category',
model:'categories',
populate:
{
path:'e_fk_event',
model:'events',
//$match : { e_fk_club_id : id }
}
})
.exec (function(err, doc){
if (err) {
callback(err) ;
} else {
callback(doc) ;
}
})
},
有没有解决方案。
提前谢谢。