假设我有一个类似于以下内容的 Mongo 集合:
[
{ "foo": "bar baz boo" },
{ "foo": "bar baz" },
{ "foo": "boo baz" }
]
是否可以确定哪些词在 foo
字段中出现的频率最高(最好使用计数)?
例如,我喜欢这样的结果集:
[
{ "baz" : 3 },
{ "boo" : 2 },
{ "bar" : 2 }
]
最佳答案
最近关闭了一个JIRA issue关于在聚合框架的 $project
阶段使用的 $split
运算符。
有了它,您就可以创建这样的管道
db.yourColl.aggregate([
{
$project: {
words: { $split: ["$foo", " "] }
}
},
{
$unwind: {
path: "$words"
}
},
{
$group: {
_id: "$words",
count: { $sum: 1 }
}
}
])
结果是这样的
/* 1 */
{
"_id" : "baz",
"count" : 3.0
}
/* 2 */
{
"_id" : "boo",
"count" : 2.0
}
/* 3 */
{
"_id" : "bar",
"count" : 2.0
}
关于string - 在整个集合的字符串字段中查找最常用的词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38750429/