首页 > 解决方案 > MongoDB查询过滤对象数组和格式返回对象

问题描述

我有一个这样的 MongoDB 集合:

{
    "_id" : "course1",
    "teams" : [ 
        {
            "key" : "1548600639880X5269760768997986",
            "title": "Team One",
            "members" : {
                "user1" : true
            }
        }, 
        {
            "key" : "1548601941683X14679065888073906",
            "title": "Team Two",
            "members" : {
                "user2" : true,
                "user3" : true
            }
        }, 
        {
            "key" : "1548602385020X41594057288000386",
            "title": "Team Three",
            "members" : {
                "user4" : true
            }
        }
    ],
    "updated_at" : "2019-01-27T15:31:43+00:00"
}

我正在尝试让 user2 的“团队”与所有值为 true 的用户一起使用。所以返回对象应该是这样的:

 {
     "key" : "1548601941683X14679065888073906",
     "title": "Team Two",
     "members" : {
         "user2" : true,
         "user3" : true
     }
  }

我用 db.getCollection('').find({}) 做了很多尝试,但没有得到所需的结果。

标签: jsonmongodbmongodb-query

解决方案


db.getCollection('teams').find({
    "_id": "course1",
    "teams.members": { "user1": true }
})

得到我

{
    "_id" : "course1",
    "teams" : [ 
        {
            "key" : "1548600639880X5269760768997986",
            "title" : "Team One",
            "members" : {
                "user1" : true
            }
        }, 
        {
            "key" : "1548601941683X14679065888073906",
            "title" : "Team Two",
            "members" : {
                "user2" : true,
                "user3" : true
            }
        }, 
        {
            "key" : "1548602385020X41594057288000386",
            "title" : "Team Three",
            "members" : {
                "user4" : true
            }
        }
    ],
    "updated_at" : "2019-01-27T15:31:43+00:00"
}

推荐阅读