Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb聚合:$project可以工作,但在其后添加$group时返回错误_Mongodb - Fatal编程技术网

Mongodb聚合:$project可以工作,但在其后添加$group时返回错误

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',

我有一个集合,其字段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',{ $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”字段。