【发布时间】:2016-09-25 00:11:25
【问题描述】:
我现在处于这种情况: 我有一个收藏 X:
{
_id:ObjectId('56edbb4d5f084a51131dd4c6'),
userRef:ObjectId('56edbb4d5f084a51131dd4c6'),
serialNumber:'A123123',
...
}
我需要聚合所有文档,按 userRef + serialNumber 对它们进行分组,所以我尝试像这样使用 concat:
$group: {
_id: {
'$concat': ['$userRef','-','$serialNumber']
},
...
所以基本上在我在 MongoDB 中的聚合中,我需要通过 ObjectId 和字符串的串联来对文档进行分组。但是,似乎 $concat 只接受字符串作为参数:
uncaught exception: aggregate failed: {
"errmsg" : "exception: $concat only supports strings, not OID",
"code" : 16702,
"ok" : 0
}
有没有办法在聚合表达式中将 ObjectId 转换为 String?
编辑:
这个question 是相关的,但我的解决方案不适合我的问题。 (特别是因为我不能在聚合过程中使用 ObjectId.toString())
确实,我在 Mongo 的文档中找不到任何 ObjectId().toString() 操作,但我想知道在这种情况下是否可以做任何棘手的事情。
【问题讨论】:
-
也许
_id: [ $userRef, $serialNumber ]有效?它不会给你一个字符串。
标签: mongodb mongoose mongodb-query aggregation-framework robo3t