【问题标题】:MongoDB query: all documents that contain reference to a specific idMongoDB 查询:包含对特定 id 的引用的所有文档
【发布时间】:2022-01-19 23:18:59
【问题描述】:

我正在尝试从旧版 mongo db (v. 2.0.4) 中提取一些数据。我的数据结构如下:

{"_id": "1",
 "@graph": {"ma:isMemberOf": [{"@id": "524224b804743b02a4c23488",
                               "title": "IHum 350",
                               "transcript": "False"},
                              {"@id": "53cfd59404743bc3c9119adf",
                               "restrictor": "578e89ae04743b7b0816beff",
                               "title": "Spanish 339",
                               "transcript": "False"}],
            "ma:title": "Toy title 1"},
"_id": "2",
 "@graph": {"ma:isMemberOf": [{"@id": "524224b804743b02a4c23488",
                               "title": "IHum 350",
                               "transcript": "False"}],
            "ma:title": "Toy title 2"}}

...我想编写一个查询来查找属于特定组的所有文档(匹配@id 字段)。例如,我希望能够搜索 524224b804743b02a4c23488 并接收文档 1 和 2。或者搜索 53cfd59404743bc3c9119adf 并仅接收文档 1。

我已经尝试了几件事,但我不知道如何查询嵌入的对象。

【问题讨论】:

标签: mongodb mongodb-query


【解决方案1】:
db.collection.find({
  "@graph.ma:isMemberOf.@id": <your query>
})

这里是Mongo playground 供您参考。

【讨论】:

  • {"@graph.ma:isMemberOf.@id": "524224b804743b02a4c23488"} 就足够了。不需要 $elemMatch。
  • $elemMatch 做这件事对我没有用,但是就像@AlexBlex 在上面的评论中写的那样直接查询就可以了。谢谢!
  • @AlexBlex 感谢您的建议,我已经相应地更新了答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-12-11
  • 1970-01-01
  • 2023-03-21
  • 1970-01-01
  • 2011-12-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多