假设我有一个包含多个文档的集合,其结构如下:{ _id: "id12345", objects: ["123","456", "789"]}现在我想创建一个查询,在其中传递对象数组并获取数组中每个元素在文档中的出现次数,如下所示:查询输入:["123","321"] 输出:{ "123": 1, "321": 0}我只想通过一个查询来执行此操作,传递一个数组,我知道我可以一个接一个而不是一个数组轻松地做到这一点,但这不是目的。
2 回答
![?](http://img1.sycdn.imooc.com/545864000001644402200220-100-100.jpg)
慕容708150
TA贡献1831条经验 获得超4个赞
一般来说,获得这一点的查询非常简单,因为不建议将值切换到数据层中的键,而是在表示层中切换更多。
所以这:
db.collection.aggregate([
{
$unwind: "$objects"
},
{
$group: {
_id: "$objects",
count: {
$sum: 1
}
}
}
])
会给你数字_id和一个count出现次数的字段。然后你可以在你的应用程序中按摩它,让它看起来像你想要的那样。
添加回答
举报
0/150
提交
取消