在MongoDb中找到完全匹配的数组或具有数组的所有值

时间:2015-02-26 05:55:12

标签: mongodb mongoose mongodb-query sails-mongo

我有像这样的集合条目

[
 {
    shape : [{id:1,status:true},{id:2,status:false}]
 },
 {
    shape : [{id:1,status:true}]
 }
]

我想获取与数组完全匹配的数据,意味着包含所有ele。数组。

实施例。其中shape.id = [1,2] / [{id:[1,2]}](任何人都喜欢)

那么它应该只返回

[
 {
    shape : [{id:1,status:true},{id:2,status:false}]
 }
]

如果有任何本机mongodb查询,请帮助我。

由于

- ND

2 个答案:

答案 0 :(得分:2)

这是一个更简单的查询;

db.shapes.find({'shape.id':{$all:[1,2]},shape:{$size:2}});

答案 1 :(得分:1)

如果mongo文件如下

    {
    "_id" : ObjectId("54eeb68c8716ec70106ee33b"),
    "shapeSize" : [
        {
            "shape" : [
                {
                    "id" : 1,
                    "status" : true
                },
                {
                    "id" : 2,
                    "status" : false
                }
            ]
        },
        {
            "shape" : [
                {
                    "id" : 1,
                    "status" : true
                }
            ]
        }
    ]
}

然后使用下面的聚合来匹配标准

        db.collectionName.aggregate({
    "$unwind": "$shapeSize"
}, {
    "$match": {
    "$and": [{
        "shapeSize.shape.id": 2
    }, {
        "shapeSize.shape.id": 1
    }]
    }
}, {
    "$project": {
    "_id": 0,
    "shape": "$shapeSize.shape"
    }
})