我有一个名为“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-0002a5d5c51b
和NodeJS
驱动程序的所有文档的长度字段值的总和。
我在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);
}
);
}
这不起作用。它在打印******发送查询后突然停止,没有其他错误信息或任何类型的信息。 我不确定这里出了什么问题;非常感谢任何帮助。