2015-10-26 112 views
0

我想返回特定用户拥有的所有记录。我可以得到它的返回值如预期,当我通过服务器端节点使用终端查询MongoDB的,但是当我尝试并获得结果Mongo db Aggregate匹配一个子文档

对象

{ { "_id" : ObjectId("562820793089576b064a4e9c"), 
"record" : ObjectId("562813a2d6f390ec585490bb"), 
"user" : ObjectId("561c00a49ae9f2e340aa3a6b"), 
"AuditItems" : [ ...], 
"AuditType" : [ "update" ], 
"created" : ISODate("2015-10-21T23:32:09.256Z"), 
"__v" : 0 } 

当我做这个查询对终端我得到的结果,我想:

db.audits.aggregate([{ 
    $match:{"user":ObjectId("561c00a49ae9f2e340aa3a6b")}}, 
    { $group: { _id: {$dateToString: { format: "%m/%d/%Y", date: "$created" }}, dataPoints: {$sum: {$size: "$AuditItems"}} } }, 
    { $sort: { _id: 1 } 
}]) 

结果:

{ "_id" : "10/21/2015", "dataPoints" : 4 } 
{ "_id" : "10/22/2015", "dataPoints" : 11 } 
{ "_id" : "10/24/2015", "dataPoints" : 1 } 

然而,当我使经由服务器侧节点控制器此请求,则返回错误:返回:MongoError:最大调用堆栈大小exceededundefined

db.audits.aggregate([{ 
    $match:{"user":req.user}}, 
    { $group: { _id: {$dateToString: { format: "%m/%d/%Y", date: "$created" }}, dataPoints: {$sum: {$size: "$AuditItems"}} } }, 
    { $sort: { _id: 1 } 
}]) 

其中req.user是对象从路径抬头“/ api/user/audits /:userId/edits“

仅供参考我在其他地方使用:userid路径模板成功我也可以简单地删除$ match行并获得成功响应。我莫名其妙地失踪就行了问题:

$match:{"user":req.user}}, 

回答

0

当然像往常一样,我贴的那一刻我找到了答案:

$match:{"user":req.user._id}}, 

传递整个对象是不必要的,只是要求我传递对象的id以匹配它。

感谢收看...

+0

可以将其标记是“解决”,如果该问题已得到解决。 – Nattyk