在 MongoDb 中找到完全匹配的数组或数组的所有值
Find exactly match array or having all value of array in MongoDb
我有 collection 个这样的条目
[
{
shape : [{id:1,status:true},{id:2,status:false}]
},
{
shape : [{id:1,status:true}]
}
]
我想获取与数组完全匹配的数据,即包含所有元素。数组。
例如。其中 shape.id = [1,2] / [ {id: [1,2] } ] (任何人都喜欢)
那么它应该 return 只有
[
{
shape : [{id:1,status:true},{id:2,status:false}]
}
]
如果有任何本机 mongodb 查询,请帮助我。
谢谢
--ND
如果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"
}
})
这是更简单的查询;
db.shapes.find({'shape.id':{$all:[1,2]},shape:{$size:2}});
我有 collection 个这样的条目
[ { shape : [{id:1,status:true},{id:2,status:false}] }, { shape : [{id:1,status:true}] } ]
我想获取与数组完全匹配的数据,即包含所有元素。数组。
例如。其中 shape.id = [1,2] / [ {id: [1,2] } ] (任何人都喜欢)
那么它应该 return 只有
[ { shape : [{id:1,status:true},{id:2,status:false}] } ]
如果有任何本机 mongodb 查询,请帮助我。
谢谢
--ND
如果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"
}
})
这是更简单的查询;
db.shapes.find({'shape.id':{$all:[1,2]},shape:{$size:2}});