我正在尝试返回特定用户拥有的所有记录。当我使用终端查询mongodb但是当我尝试通过服务器端节点获取结果时,我可以让它按预期返回值
对象
{ { "_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:最大调用堆栈大小超出定义
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 :(得分:0)
当然,像往常一样,我发布它的那一刻,我找到了答案:
$match:{"user":req.user._id}},
传递整个对象是不必要的,只需要传递对象的id以匹配它。
感谢收看...