是否可以在 mongodb 聚合函数中使用“$where”

Eri*_*SRK 6 mongodb pymongo

我需要使用聚合函数在 MongoDB 中获取字符串值的长度。

它适用于

db.collection_name.find({"$where":"this.app_name.length===12"})
Run Code Online (Sandbox Code Playgroud)

但是当植入到

db.collection_name.aggregate({$match: 
                                 {"$where":"this.app_name.length===12"}
                                 },
                             {
                             $group :
                                  {
                                  _id : 1,
                                   app_downloads : {$sum: "$app_downloads"}
                                  }
                             }

);
Run Code Online (Sandbox Code Playgroud)

我得到了这个结果:

failed: exception: $where is not allowed inside of a $match aggregation expression
Run Code Online (Sandbox Code Playgroud)

问题是:是否可以在聚合函数中使用 $where?或者有没有办法在聚合函数中获取字符串值的长度?

提前致谢 埃里克

Art*_*nin 5

MongoDB 不支持聚合管道中的$where并希望这永远不会发生,因为 JavaScript 会减慢速度。无论如何,您仍然有选择:

1) ?aintain 额外的字段(例如 app_name_len)而不是存储app_name长度并在需要时查询它。

2) 您可以尝试极慢的MapReduce 框架,您可以在其中使用 JavaScript 编写聚合。