我在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
}
我想查询“对象”集合,显示“对象”中每个文档的“值”的传入链接数,并按该编号按降序排序。我想收到这样的话:
{
_id: 11,
name: "Foo",
links: 2
},
{
_id: 13,
name: "Quux"
links: 1
},
{
_id: 12,
name: "Bar",
links: 0
}
在SQL中,使用简单的外连接GROUP BY和ORDER BY可以实现这一点。
我无法使用MapReduce(这必须是在线查询,而不是预定作业)。我无法对任何东西进行反规范化,因为实际上“对象”和“值”是具有大量遗留代码的大型文档的集合,具体取决于它们的确切结构。
有什么建议吗?
答案 0 :(得分:0)
MongoDB没有JOIN。无法通过单个查询从多个集合中获取数据。这意味着您需要在应用程序层上编写JOIN,然后在应用程序中执行GROUP BY。如何执行此操作取决于您的应用程序正在使用的技术。
很抱歉,这是您为MongoDB构建数据时所获得的,就像它是一个SQL数据库一样。