我有这个结构

{
    "_id": "willwill",
    "rental": {
        "hitchhikergalaxy": {[...]},
        "animalfarm": {[..]}
    }
}

其中[..]是一个嵌入式文档,存储租赁的详细信息(并且在另一个集合中也存在完全相同的数据),而rental对象的键是_id集合的book
如何进行此查询?
db.users.find({"rental.animalfarm": {'$exists': true}})

(我在php上使用mongodb,但上面的例子是javascript)

最佳答案

您可能需要考虑重构文档,以便:

"rental":
  [
     { "name":"hitchikergalaxy", "attributes": { your stuff } },
     { "name":"animalfarm", "attributes": { your stuff } }
  ]

现在你有了确保索引“rental.name”的路径
您还可以找到任何用户使用以下方式租用animalfarm的所有文档:
db.users.find( { "rental.name": "animalfarm" } )

我一直在使用数据作为键/名称——这似乎总是让事情变得比需要的更复杂。

10-08 07:39