我有一个带文档和行的结构.一行有一个对它的文档的引用.但是有些行也可以引用另一行.
我想进行查询以检索文档中涉及的所有行(意味着直接链接的行和引用的行).
例
{_id:1, doc:1 },
{_id:3, doc:1, linkedLine:4},
{_id:4, doc:2 },
{_id:5, doc:2 },
Run Code Online (Sandbox Code Playgroud)
我想获得
linesOfDoc(1) = {_id:1, doc:1},{_id:3, doc:1, linkedLine:4},{_id:4, doc:2 }
Run Code Online (Sandbox Code Playgroud)
我可以用doc = 1获得第一行,做一个循环并获得链接行(如果存在).
但是,这可以在一个mongodb查询中执行此操作吗?
问候
您不能像使用 sql 那样使用 mongo 进行连接,但可以使用聚合管道来接近来接近。
您在一个查询中获得了所有数据,但您需要进一步展平它才能获得您指定的确切结果。
MONGO> db.playground.find()
{ "_id" : 1, "doc" : 1 }
{ "_id" : 3, "doc" : 1, "linkedLine" : 4 }
{ "_id" : 4, "doc" : 2 }
MONGO> db.playground.aggregate([{ $lookup: { from: "playground", localField: "linkedLine", foreignField: "_id", as: "embeddedLinkedLine"}}, { $match: { doc: <id of the document youre looking for> }}])
{ "_id" : 1, "doc" : 1, "embeddedLinkedLine" : [ ] }
{ "_id" : 3, "doc" : 1, "linkedLine" : 4, "embeddedLinkedLine" : [ { "_id" : 4, "doc" : 2 } ] }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
146 次 |
| 最近记录: |