【问题标题】:Find exactly match array or having all value of array in MongoDb在 MongoDb 中查找完全匹配的数组或具有数组的所有值
【发布时间】:2015-04-28 09:59:07
【问题描述】:

我有这样的收藏条目

[ { 形状:[{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

【问题讨论】:

标签: mongodb mongoose mongodb-query sails-mongo


【解决方案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"
    }
})

【讨论】:

    【解决方案2】:

    这里的查询要简单得多;

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-10-28
      • 2017-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-10
      • 1970-01-01
      • 2013-11-06
      相关资源
      最近更新 更多