我有一个MongoDB分组查询,它可以在Mongo控制台上运行得很好:
db.accounts.group(
{ cond: { "created_at" : { $gte: ISODate("2012-08-12T00:00:00Z") }}
, key: {member_id: true}
, initial: {count: 0, failed: 0, succeeded: 0}
, reduce: function(doc, out) {
out.count++;
if (!doc.success)
out.failed++
else
out.succeeded++
}
});
我的三个问题:
更新
对于#3,我基本上是在寻找这个:
mongo my_db --eval 'some_var=X;' --quiet my_script.js >> output.txt
my_db是我正在使用的数据库,some_var是我传递给my_script.js的变量,它包含我的分组查询。 output.txt显然是写入输出的地方。
答案 0 :(得分:0)
您可以使用支持此日期表示法的JS Date
对象(http://www.w3schools.com/js/js_obj_date.asp),但是您完成它的方式通常是制作日期的最佳方式,ISO日期始终是更好的是,为什么Mongo从普通Date
对象变为大约v1.6或8(现在不记得:\
)。
由于group返回单个BSON文档(这意味着结果不能超过16meg),您必须对它们进行客户端排序。更正:您无法对传入的查询进行排序,因为它是我刚才意识到的单个对象。所以这是客户端的事情。虽然你可以这样做,如果你使用MR(我估计)。
只需将返回的结构写入平面文件即可。它是一个单独的文档,我不知道你希望如何将结果格式化为平面文件或者你想要处理它的语言,但是通常你会从例如PHP(例如)PHP中激活group命令并继续工作它在那里。这种语言更容易。
注意:Group()不支持分片,聚合框架(http://docs.mongodb.org/manual/applications/aggregation/)几乎可以取代我的想法。