MongoDB查询在shell中运行,但在NodeJS驱动程序中失败

时间:2015-05-27 14:11:26

标签: node.js mongodb

我有一个名为“files”的集合,包含以下文档:

{
    "_id" : "8e1e0d87-fa8f-4c0a-bd7f-78f1b84aefbb",
    "groupId" : "7ee973c0-54b5-11e4-aaed-0002a5d5c51b",
    "uploadDate" : NumberLong(1427392635983),
    "file" : "n/ws/hs/f25a2613-3094-4150-9268-c6248475218d",
    "length" : 56353,
    "contentType" : "image/other"
}

/* 2 */
{
    "_id" : "de392172-27a5-45bb-ba11-d1c494847dda",
    "groupId" : "7ee973c0-54b5-11e4-aaed-0002a5d5c51b",
    "uploadDate" : NumberLong(1427392687008),
    "file" : "y/ba/co/22c987c2-2ab3-46a3-8ff8-474a070f2fcc",
    "length" : 56353,
    "contentType" : "image/other"
}

我希望获得groupId 7ee973c0-54b5-11e4-aaed-0002a5d5c51bNodeJS驱动程序的所有文档的长度字段值的总和。

我在Mongo Shell中尝试过这个查询:

  db.files.aggregate(
        [
        {$match:{"groupId":"7ee973c0-54b5-11e4-aaed-0002a5d5c51b"}},
        { $group: { "_id": "test", "totalLength":{$sum:"$length"} } }
        ]
    )

它有效。我试图在NodeJS方法中做同样的事情:

 function(db, callback) {
    var groupId = "7ee973c0-54b5-11e4-aaed-0002a5d5c51b";
      console.log("*****sending query");
        db.collection('files').aggregate(
            [   
               {$match:{"groupId":groupId}},
               { $group: { "_id": "test", "totalLength":{$sum:"$length"} } }
            ]).toArray(function(err, result) {
                console.log("***received");
                console.log(result);
                callback(result);
             }
           );
    }

这不起作用。它在打印******发送查询后突然停止,没有其他错误信息或任何类型的信息。 我不确定这里出了什么问题;非常感谢任何帮助。

0 个答案:

没有答案