我在MongoDB中有两个集合。让我们称其中一个为“对象”:
{
_id: 11,
name: "Foo"
},
{
_id: 12,
name: "Bar"
},
{
_id: 13,
name: "Quux"
}另一个是“值”,它引用了“对象”:
{
_id: 21,
value: "One",
object_id: 11
},
{
_id: 22,
value: "Two",
object_id: 11
},
{
_id: 21,
value: "Three",
object_id: 13
}我想查询"objects“集合,显示"objects”中每个文档的"values“传入链接的数量,并按该数量降序排序。我想收到这样的东西:
{
_id: 11,
name: "Foo",
links: 2
},
{
_id: 13,
name: "Quux"
links: 1
},
{
_id: 12,
name: "Bar",
links: 0
}在SQL中,这可以使用简单的外连接、GROUP BY和ORDER BY来实现。
我不能使用MapReduce (这必须是一个在线查询,而不是计划的作业)。我不能将任何东西反规范化为“对象”和“值”,实际上,“值”是相当大的文档的集合,根据其确切的结构,具有大量遗留代码。
有什么建议吗?
发布于 2014-08-05 22:55:20
MongoDB没有联接。没有办法通过一个查询从多个集合中获取数据。这意味着您需要在应用程序层上对连接进行编程,然后在应用程序中执行GROUP BY。如何做到这一点取决于您的应用程序所使用的技术。
很抱歉,这是当您为MongoDB组织数据时得到的结果,就像它是一个SQL数据库一样。
https://stackoverflow.com/questions/25141336
复制相似问题