Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript MongoDB查询:订单&;输出结果_Javascript_Mongodb - Fatal编程技术网

Javascript MongoDB查询:订单&;输出结果

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) {

我有一个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) { 
        out.count++; 
        if (!doc.success)
            out.failed++
        else
            out.succeeded++
    }
   });
我的三个问题:

  • 有没有更简单的方法来生成这个时间戳:ISODate(“2012-08-12T00:00:00Z”)?我可以使用date函数生成此时间戳吗?如果是,怎么做
  • 如何按分组字段“失败”或“成功”对返回的结果进行排序(asc/desc)
  • 最后,如何将输出导出到平面文件
更新

对于#3,我基本上是在寻找这个:

mongo my_db --eval 'some_var=X;' --quiet my_script.js >> output.txt
其中my_db是我正在使用的数据库,some_var是一个变量,我正在传递给my_script.js,其中包含我的group by查询。output.txt显然是写入输出的地方

  • 您可以使用JS
    Date
    对象(),它确实支持此日期符号,但是您使用它的方式通常是制作日期的最佳方式,ISO日期总是更好,这就是为什么Mongo在大约1.6或8版中从普通的
    Date
    对象更改为这些对象的原因(现在不记得了
    :\

  • 由于组返回单个BSON文档(这意味着结果不能大于16meg),所以您必须在客户端对它们进行排序。更正:您无法对传入的查询进行排序,因为正如我刚刚意识到的,它是一个单独的对象。这是客户端的事情。虽然如果你使用MR(我想)你也可以这么做

  • 只需将返回的结构写入平面文件。这是一个单独的文档,我不知道您希望如何将结果格式化为平面文件,也不知道您希望用什么语言处理它,但是通常您会从(例如)PHP启动group命令并在那里进行处理。用这类语言更容易


  • 注意:Group()不适用于切分,我认为聚合框架()将基本上取代切分。

    注意:我通过客户端执行这些操作。因此,如果可能的话,我正在寻找如何从命令行执行#2和#3。当然,我可以编写一个脚本来完成我想做的任何事情,但我想看看是否有直接从CLI执行的方法。@doremi For#3我不相信JS引擎(spidermonkey)有一个写文件模块,我发现最接近的是非标准的,所以可能不存在。@doremi For#2如何排序?我可以在JS中创建一个快速排序函数(或者偷一个),你可以使用它,但这取决于你希望如何排序。我只希望结果按asc或desc顺序按“失败”或“成功”计数排序。@doremi Ok对我来说,似乎每个文档都有一个
    失败
    成功
    字段。因此,这应该很容易排序,就像你说的,这些键上的ASC和DESC,这个链接有帮助吗?