mongodb 展开汇总结果?
mongodb unwind aggregate result?
所以我正在尝试使用聚合在我的数据库中生成一些统计数据
我当前的脚本如下所示:
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(对我来说更舒服),这对我来说就像一个文档:
我想让每个结果成为一个单独的文档,像这样:
| _id | counter
---+-------------+--------
1 | i.imgur.com | 1220
---+-------------+--------
2 | imgur.com | 459
我假设我需要使用 $unwind,但失败得很惨:将 { $unwind : "$result"}
添加到聚合链会产生以下输出:
/* 0 */
{
"result" : [],
"ok" : 1
}
我做错了什么以及如何做对?
我不使用 robomongo,但您似乎可以将 .result
添加到您的脚本中以获得您想要的结果输出。
db.posts.aggregate( [
{ $group: {_id : "$domain", "counter" : {$sum : 1}}},
{ $sort : { counter : -1}},
{ $match : { counter : {$gt : 10} } }
]).result
我已经对此进行了一些研究,您得到的 return 输出似乎是 robomongo 使用 db.posts.runCommand("aggregate", {pipeline: [<array of pipeline operators>]})
而不是 "instantiating a cursor" 而不是 aggregate()
创建游标的助手。
我认为除了提交工单外,您无能为力。
所以我正在尝试使用聚合在我的数据库中生成一些统计数据
我当前的脚本如下所示:
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(对我来说更舒服),这对我来说就像一个文档:
我想让每个结果成为一个单独的文档,像这样:
| _id | counter
---+-------------+--------
1 | i.imgur.com | 1220
---+-------------+--------
2 | imgur.com | 459
我假设我需要使用 $unwind,但失败得很惨:将 { $unwind : "$result"}
添加到聚合链会产生以下输出:
/* 0 */
{
"result" : [],
"ok" : 1
}
我做错了什么以及如何做对?
我不使用 robomongo,但您似乎可以将 .result
添加到您的脚本中以获得您想要的结果输出。
db.posts.aggregate( [
{ $group: {_id : "$domain", "counter" : {$sum : 1}}},
{ $sort : { counter : -1}},
{ $match : { counter : {$gt : 10} } }
]).result
我已经对此进行了一些研究,您得到的 return 输出似乎是 robomongo 使用 db.posts.runCommand("aggregate", {pipeline: [<array of pipeline operators>]})
而不是 "instantiating a cursor" 而不是 aggregate()
创建游标的助手。
我认为除了提交工单外,您无能为力。