如何找到人口众多的猫鼬?

时间:2016-12-15 10:48:30

标签: node.js mongoose

我成功地在第一个模型中使用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) ;

                    }
                })
        },

有没有解决方案。

提前谢谢。

0 个答案:

没有答案