Mongoose在键值对的数组中按值查找

时间:2015-06-26 23:59:29

标签: mongodb mongoose

我正在尝试从结构中找到一份文件

    "brandcredits": [
        {
            "brand_id": "5586da128a60ebcb7abeb732",
            "brand_credits": 123,
            "_id": "558ce2af106319b412e48b6c"
        },
        {
            "brand_id": "5586da238a60ebcb7abeb733",
            "brand_credits": 500,
            "_id": "558ce2af106319b412e48b6b"
        },
        {
            "brand_id": "558b382e7881f424154d6c27",
            "brand_credits": 500,
            "_id": "558ce2af106319b412e48b6a"
        },
        {
            "brand_id": "558b38467881f424154d6c28",
            "brand_credits": 500,
            "_id": "558ce2af106319b412e48b69"
        },
        {
            "brand_id": "558b38687881f424154d6c29",
            "brand_credits": 245,
            "_id": "558ce2af106319b412e48b68"
        }
    ] 

我的猫鼬查询是

BrandInfo.find({'_id':{$in: user[0].brandcredits.brand_id}},function(err,active){
           console.log(active);
});

返回undefined

我需要使用brand_id数组查询模式。 我怎么做? 任何帮助将非常感激。 感谢

1 个答案:

答案 0 :(得分:0)

您正在做的是在_id中搜索user[0].brandcredits.brand_id哪些无法正常工作,甚至有意义,因为user[0].brandcredits.brand_id本身只是另一个ObjectID。

您需要搜索的内容为: brand_id user[0].brandcredits

所以试试这个:

BrandInfo.find( { 'brand_id': {$in: user[0].brandcredits} } , function(err, active){
    console.log(active);
});