mongodb展开聚合结果?

时间:2015-01-27 09:14:02

标签: mongodb aggregation-framework

所以我试图使用聚合

在我的数据库中生成一些统计信息

我当前的脚本如下所示:

db.posts.aggregate( [
    { $group: {_id : "$domain", "counter" : {$sum : 1}}},
    { $sort : { counter : -1}},
    { $match : { counter : {$gt : 10} } }
])

并生成如下结果:

{
    "result" : [ 
        {
            "_id" : "i.imgur.com",
            "counter" : 1220
        }, 
        {
            "_id" : "imgur.com",
            "counter" : 459
        }         
    ],
    "ok" : 1
}

非常满意,但我想进一步发展。我正在使用robomongo(对我来说更舒服),这对我来说就像单个文档:

screenshot

我希望每个结果都是一个单独的文档,如下所示:

   | _id         | counter
---+-------------+--------
 1 | i.imgur.com | 1220
---+-------------+--------
 2 | imgur.com   | 459

我假设我需要使用$ unwind,但失败了:将{ $unwind : "$result"}添加到聚合链会产生此输出:

/* 0 */
{
    "result" : [],
    "ok" : 1
}

我做错了什么,怎么做错了?

1 个答案:

答案 0 :(得分:1)

我没有使用robomongo,但似乎您可以在.result上添加脚本以获得所需的结果输出。

db.posts.aggregate( [
    { $group: {_id : "$domain", "counter" : {$sum : 1}}},
    { $sort : { counter : -1}},
    { $match : { counter : {$gt : 10} } }
]).result

我已经做了一些调查,看来你得到的返回输出是robomongo使用db.posts.runCommand("aggregate", {pipeline: [<array of pipeline operators>]})而不是&#34;实例化游标&#34;的结果。而不是创建游标的aggregate()助手。

我认为除了提交门票之外你还可以做很多事情。