我需要使用聚合函数在 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?或者有没有办法在聚合函数中获取字符串值的长度?
提前致谢 埃里克
MongoDB 不支持聚合管道中的$where并希望这永远不会发生,因为 JavaScript 会减慢速度。无论如何,您仍然有选择:
1) ?aintain 额外的字段(例如 app_name_len)而不是存储app_name长度并在需要时查询它。
2) 您可以尝试极慢的MapReduce 框架,您可以在其中使用 JavaScript 编写聚合。
| 归档时间: |
|
| 查看次数: |
3425 次 |
| 最近记录: |