Mongodb聚合:$project可以工作,但在其后添加$group时返回错误
我有一个集合,其字段appVersion的长度不同,例如: 1a 1.1a 1.1b 1b 1.1c 1.12c 2.0c 等等 我想按字母对值进行分组。在上述情况下,其: a:2 b:2 c:3 我将聚合与以下代码一起使用:Mongodb聚合:$project可以工作,但在其后添加$group时返回错误,mongodb,Mongodb,我有一个集合,其字段appVersion的长度不同,例如: 1a 1.1a 1.1b 1b 1.1c 1.12c 2.0c 等等 我想按字母对值进行分组。在上述情况下,其: a:2 b:2 c:3 我将聚合与以下代码一起使用: db.collection.aggregate([ {$project:{"_id":1, "app_type":{ $substr:['$appVersion',
db.collection.aggregate([
{$project:{"_id":1,
"app_type":{
$substr:['$appVersion',{ $subtract: [ { $strLenCP: '$appUser.profile.appVersion' }, 1 ] },-1]
}
}
},
{
$group:{
'_id':'$app_type',
count: { $sum: 1 }
}
}
])
单是$project部分就起作用了,它给了我字母
单独使用$group部分也很有效(如果我不使用该项目)
但在同一管道中,我得到以下错误:
Error: command failed: {
"ok" : 0,
"errmsg" : "$strLenCP requires a string argument, found: missing",
"code" : 34471,
"codeName" : "Location34471"
} : aggregate failed
如果我删除$strLenCP
并编写一些数字,它可以正常工作,但显然不会给出正确的结果
我做错了什么?如果您的
appVersion
字段未嵌入,您可以直接将其提供给$strLenCP
,就像使用$substr
操作符一样
$strLenCP: "$appVersion"
这是如果您的
appVersion
字段未嵌入,您可以直接将其提供给$strLenCP
,就像您使用$substr
操作符一样
$strLenCP: "$appVersion"
以下是您可以在问题中添加一些示例文档吗?您可以在问题中添加一些示例文档吗?注释正确,但不适用于“$appVersion”字段。注释正确,但不适用于“$appVersion”字段。