什么是对GROUPed BY字段进行排序的mongodb等价物

时间:2014-08-05 14:28:59

标签: mongodb nosql

我在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(这必须是在线查询,而不是预定作业)。我无法对任何东西进行反规范化,因为实际上“对象”和“值”是具有大量遗留代码的大型文档的集合,具体取决于它们的确切结构。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

MongoDB没有JOIN。无法通过单个查询从多个集合中获取数据。这意味着您需要在应用程序层上编写JOIN,然后在应用程序中执行GROUP BY。如何执行此操作取决于您的应用程序正在使用的技术。

很抱歉,这是您为MongoDB构建数据时所获得的,就像它是一个SQL数据库一样。