use*_*745 4 string mapreduce mongodb aggregation-framework mongodb-aggregation
假设我有一个类似于以下内容的Mongo集合:
[
{ "foo": "bar baz boo" },
{ "foo": "bar baz" },
{ "foo": "boo baz" }
]
Run Code Online (Sandbox Code Playgroud)
是否有可能确定哪些单词最常出现在foo字段中(理想情况下是计数)?
例如,我喜欢以下结果:
[
{ "baz" : 3 },
{ "boo" : 2 },
{ "bar" : 2 }
]
Run Code Online (Sandbox Code Playgroud)
最近关闭了一个关于在聚合框架阶段使用的运算符的JIRA问题.
有了它,您可以创建这样的管道 $split$project
db.yourColl.aggregate([
{
$project: {
words: { $split: ["$foo", " "] }
}
},
{
$unwind: {
path: "$words"
}
},
{
$group: {
_id: "$words",
count: { $sum: 1 }
}
}
])
Run Code Online (Sandbox Code Playgroud)
结果看起来像这样
/* 1 */
{
"_id" : "baz",
"count" : 3.0
}
/* 2 */
{
"_id" : "boo",
"count" : 2.0
}
/* 3 */
{
"_id" : "bar",
"count" : 2.0
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1113 次 |
| 最近记录: |