MongoDB查询深层嵌入式数据

时间:2018-08-16 13:15:07

标签: mongodb mongodb-query

如果我有一些结构类似的文档

{
    "group": "GroupA",
    "people": {
        "Joe": [
            {
                "type": "home",
                "address": "123 Fake St"
            },
            {
                "type": "work",
                "address": "345 Work Pl"
            }
        ],
        "Mary": [
            {
                "type": "home",
                "address": "1 Main St"
            },
            {
                "type": "work",
                "address": "345 Work Pl"
            }
        ],
        "Bob": [
            {
                "type": "home",
                "address": "1 Main St"
            }
        ]
    }
}

我如何查询一个人的组地址为“ 345 Work Pl”。我试图使用$ elemMatch,但这似乎只能查询甚至没有列表的第一级。我希望整个文档至少有一个匹配项。

1 个答案:

答案 0 :(得分:0)

我认为,如果您可以采用这种结构,那么进行更多查询会更好,更容易

这是主意

// group collection
[
  {
    id: '1'
    name: 'groupA'
  }
]

// people collection
[
  {
    id: 1
    name: 'Joe', 
    type: 'home',
    address: '123 Fake St',
    group: 1
  }, {
    id: 2,
    name: 'Mary',
    address: '1 Main St'
    group: 1
  }
]

在这种结构中,您可以通过执行以下操作检索所需的数据:

db.people.find({ address: '345 Work Pl' })
如您所见

容易得多。


现在,如果您需要每次显示组名时都可以将其存储在每个人中。