我有这样的蒙戈系列
[
/* 1 */
{
"_id" : 1,
"data_id" : 1,
"data_test" : "sample1",
"data_list" : [
"sun"
],
}
/* 2 */
{
"_id" : 2,
"data_id" : 1,
"data_test" : "sample2",
"data_list" : [
"sun",
"mon"
],
}
/* 3 */
{
"_id" : 3,
"data_id" : 2,
"data_test" : "sample3",
"data_list" : [
"tue"
],
}
/* 4 */
{
"_id" : 4,
"data_id" : 2,
"data_test" : "sample4",
"data_list" : [
"tue",
"wed"
],
}
]
我想查询这个来得到data_list的元素在一个data_id相同的集合中出现的次数。如果data_list是一个元素而不是一个列表,可以使用这样的SQL查询来实现。
Select data_list, count(*) from analytics_customer where data_id = 1 group by data_list
如果我们只查询“data_id”,输出应该如下所示:1
{
"sun": 2,
"mon": 1
}
“data_id”的输出为:2
{
"tue": 2,
"wed": 1
}
2条答案
按热度按时间up9lanfz1#
蒙戈Playground工作示例:https://mongoplayground.net/p/tJjmjcPQWer
工艺流程:
值得注意的是,您可以更改对象的根,但将其保留在
days
字段中进行操作会更简单。汇总永远会产生数组,而不是单一对象。
我相信有更好的方法。
查询
结果(对于单个ID):
结果(对于所有ID):
f0brbegy2#
您可以使用aggregation
或者如果列表中的选项数量是固定的(一周7天),则可以运行
.count()
7次,并使用$exists搜索每一天