0

我有这样的收藏条目

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

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

前任。其中 shape.id = [1,2] / [ {id: [1,2] } ] (任何一个都是首选)

那么它应该只返回

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

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

谢谢

--ND

4

2 回答 2

6

这是更简单的查询;

db.shapes.find({'shape.id':{$all:[1,2]},shape:{$size:2}});
于 2015-02-26T10:02:09.317 回答
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"
    }
})
于 2015-02-26T06:05:25.833 回答