我正在实现一个联系人数据库,其中有相当多的字段需要处理。其中大部分是预定义的,可以考虑为绑定字段,但还有一些不是。我们将其中一个称为“群组”。我们目前的实现方式是(每个文档/联系人都有“群组”字段):
'groups' : {
152 : 'hi',
111 : 'group2'
}
但经过一些阅读后,似乎我应该这样做:
'groups' : [
{ 'id' : 152, 'name' : 'hi' },
{ 'id' : 111, 'name' : 'group2' }
...
]
然后应用索引db.contact.ensureIndex({'groups.id':1});
我的问题与功能有关。这两种结构之间的区别是什么?索引实际上是如何构建的(它只是在每个文档/联系人内进行索引还是构建一个包含所有文档/联系人中所有组的大规模索引)。
我认为这在结构上是最佳方式,但如果我错了,请告诉我。
db.<collectionName>.find({"groups":{$elemMatch:{"id":152}}})
这样的查询? - Sebastien Lorber