Javascript MongoDB查询:订单&;输出结果
我有一个MongoDB group by query,它在Mongo控制台上运行得非常好:Javascript MongoDB查询:订单&;输出结果,javascript,mongodb,Javascript,Mongodb,我有一个MongoDB group by query,它在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) {
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++
}
});
我的三个问题:
- 有没有更简单的方法来生成这个时间戳:ISODate(“2012-08-12T00:00:00Z”)?我可以使用date函数生成此时间戳吗?如果是,怎么做
- 如何按分组字段“失败”或“成功”对返回的结果进行排序(asc/desc)
- 最后,如何将输出导出到平面文件
mongo my_db --eval 'some_var=X;' --quiet my_script.js >> output.txt
其中my_db是我正在使用的数据库,some_var是一个变量,我正在传递给my_script.js,其中包含我的group by查询。output.txt显然是写入输出的地方
Date
对象(),它确实支持此日期符号,但是您使用它的方式通常是制作日期的最佳方式,ISO日期总是更好,这就是为什么Mongo在大约1.6或8版中从普通的Date
对象更改为这些对象的原因(现在不记得了:\
)注意:Group()不适用于切分,我认为聚合框架()将基本上取代切分。注意:我通过客户端执行这些操作。因此,如果可能的话,我正在寻找如何从命令行执行#2和#3。当然,我可以编写一个脚本来完成我想做的任何事情,但我想看看是否有直接从CLI执行的方法。@doremi For#3我不相信JS引擎(spidermonkey)有一个写文件模块,我发现最接近的是非标准的,所以可能不存在。@doremi For#2如何排序?我可以在JS中创建一个快速排序函数(或者偷一个),你可以使用它,但这取决于你希望如何排序。我只希望结果按asc或desc顺序按“失败”或“成功”计数排序。@doremi Ok对我来说,似乎每个文档都有一个
失败
和成功
字段。因此,这应该很容易排序,就像你说的,这些键上的ASC和DESC,这个链接有帮助吗?