MongoDB 查询:包含对特定 id 的引用的所有文档
Posted
技术标签:
【中文标题】MongoDB 查询:包含对特定 id 的引用的所有文档【英文标题】:MongoDB query: all documents that contain reference to a specific 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。
我已经尝试了几件事,但我不知道如何查询嵌入的对象。
【问题讨论】:
docs.mongodb.com/manual/core/document/#dot-notation 【参考方案1】:db.collection.find(
"@graph.ma:isMemberOf.@id": <your query>
)
这里是Mongo playground 供您参考。
【讨论】:
"@graph.ma:isMemberOf.@id": "524224b804743b02a4c23488"
就足够了。不需要 $elemMatch。
用$elemMatch
做这件事对我没有用,但是就像@AlexBlex 在上面的评论中写的那样直接查询就可以了。谢谢!
@AlexBlex 感谢您的建议,我已经相应地更新了答案。以上是关于MongoDB 查询:包含对特定 id 的引用的所有文档的主要内容,如果未能解决你的问题,请参考以下文章