我需要使用聚合函数在 MongoDB 中获取字符串值的长度。
它适用于
db.collection_name.find({"$where":"this.app_name.length===12"})
但是当植入到
db.collection_name.aggregate({$match: 
                                 {"$where":"this.app_name.length===12"}
                                 },
                             {
                             $group :
                                  {
                                  _id : 1,
                                   app_downloads : {$sum: "$app_downloads"}
                                  }
                             }
);
我得到了这个结果:
failed: exception: $where is not allowed inside of a $match aggregation expression
问题是:是否可以在聚合函数中使用 $where?或者有没有办法在聚合函数中获取字符串值的长度?
提前致谢 埃里克
MongoDB 不支持聚合管道中的$where并希望这永远不会发生,因为 JavaScript 会减慢速度。无论如何,您仍然有选择:
1) ?aintain 额外的字段(例如 app_name_len)而不是存储app_name长度并在需要时查询它。
2) 您可以尝试极慢的MapReduce 框架,您可以在其中使用 JavaScript 编写聚合。
| 归档时间: | 
 | 
| 查看次数: | 3425 次 | 
| 最近记录: |