在MongoDB中有一个集合。
例:-
{ field1: a, field2: 1, field3: val_1, field4: val_11}
{ field1: a, field2: 2, field3: val_2, field4: val_22}
{ field1: a, field2: 5, field3: val_3, field4: val_33}
{ field1: a, field2: 1, field3: val_4, field4: val_44}
{ field1: a, field2: 3, field3: val_5, field4: val_55}
{ field1: a, field2: 3, field3: val_6, field4: val_66}
{ field1: a, field2: 5, field3: val_7, field4: val_77}
{ field1: a, field2: 2, field3: val_8, field4: val_88}
{ field1: a, field2: 1, field3: val_9, field4: val_99}
{ field1: a, field2: 2, field3: val_10, field4: val_1010}
{ field1: a, field2: 3, field3: val_11, field4: val_1111}
{ field1: b, field2: 3, field3: val_12, field4: val_1212}
{ field1: b, field2: 3, field3: val_13, field4: val_1313}
{ field1: b, field2: 3, field3: val_14, field4: val_1414}
{ field1: b, field2: 3, field3: val_15, field4: val_1515}
我想通过字段来查询文档组的集合和输出情况:-。
例:-获取文档中的 field1
是 a
按组 field2
价值观
{ field1: a, field2: 1, field3: val_1, field4: val_11}
{ field1: a, field2: 1, field3: val_4, field4: val_44}
{ field1: a, field2: 1, field3: val_9, field4: val_99}
{ field1: a, field2: 2, field3: val_2, field4: val_22}
{ field1: a, field2: 2, field3: val_8, field4: val_88}
{ field1: a, field2: 2, field3: val_10, field4: val_1010}
{ field1: a, field2: 5, field3: val_3, field4: val_33}
{ field1: a, field2: 5, field3: val_7, field4: val_77}
{ field1: a, field2: 3, field3: val_5, field4: val_55}
{ field1: a, field2: 3, field3: val_6, field4: val_66}
{ field1: a, field2: 3, field3: val_11, field4: val_1111}
我试着用 $group
在 aggregate
铩羽而归
如何实现预期的输出。
$match
将会过滤掉文件中的 field1
不等于 a
.
$group
将对数据进行分组,后面的表达式为 _id
和 $push
的 $$ROOT
数据栏中的文档。
db.collection.aggregate([
{ "$match": { "field1": "a" }},
{ "$group": {
"_id": "$field2",
"data": {
"$push": "$$ROOT"
}
}}
])