【发布时间】:2016-11-22 04:13:34
【问题描述】:
我在 MongoDB 中有两个如下所示的集合。
lookupcol1
{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120, "groupId":100100},
{ "_id" : 2, "sku" : "def", description: "product 2", "instock" : 80,"groupId":100100 },
{ "_id" : 3, "sku" : "ijk", description: "product 3", "instock" : 60 },
{ "_id" : 4, "sku" : "jkl",description: "product 4", "instock" : 70 },
{ "_id" : 5, "sku": null, description: "Incomplete", "groupId":100100 },
{ "_id" : 6 }
lookupcol2
{ "_id" : 12, "sku" : "bcd", description: "product 2", "instock" : 121, "groupId":100100},
{ "_id" : 23, "sku" : "def", description: "product 2", "instock" : 810, "groupId":100100},
{ "_id" : 34, "sku" : "ijk", description: "product 3", "instock" : 60,"groupId":100100 },
{ "_id" : 45, "sku" : "jkl",description: "product 4", "instock" : 70 },
{ "_id" : 56, "sku": "def", description: "Incomplete","groupId":100100 },
{ "_id" : 67, "groupId":100100}
我想从“groupId”为 100100 的两个集合中获取文档。
预期的结果应该如下所示。
结果:
{ "_id" : 1, "sku" : "abc", description: "product 1", "instock" : 120, "groupId":100100},
{ "_id" : 2, "sku" : "def", description: "product 2", "instock" : 80,"groupId":100100 },
{ "_id" : 5, "sku": null, description: "Incomplete", "groupId":100100 },
{ "_id" : 12, "sku" : "bcd", description: "product 2", "instock" : 121, "groupId":100100},
{ "_id" : 23, "sku" : "def", description: "product 2", "instock" : 810, "groupId":100100},
{ "_id" : 34, "sku" : "ijk", description: "product 3", "instock" : 60,"groupId":100100 },
{ "_id" : 56, "sku": "def", description: "Incomplete","groupId":100100 },
{ "_id" : 67, "groupId":100100}
任何人都可以告诉我如何获得以上输出。
【问题讨论】:
-
您是否考虑过将所有集合合并为一个?
-
是的,我考虑过,但我想知道这两种方法。
-
在 MongoDB 中,我们不能像在 SQL 中那样进行连接。另一种方法是从驱动程序/应用程序端;为每个集合制作一个 getByGroupId,然后制作一个使用所有其他集合并返回您想要的结果的 getByGroupID。我听说最新版本中有一个 $lookup(聚合),但我不知道。
标签: mongodb mongodb-query mongodb-java