Reputation: 2809
there is a collection in MongoDB,
Ex:-
{ 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}
I want to query the collection and output of the document group by the field:-
Ex:- get the document where the field1
is a
group by field2
values
{ 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}
I tried to use the $group
in aggregate
but unable to achieve the expected output
how to achieve the expected output.
Upvotes: 0
Views: 81
Reputation: 46441
$match
will filter out the documents where field1
is not equal to a
.
$group
will group the data followed by the expression in _id
and $push
the $$ROOT
document in data field.
db.collection.aggregate([
{ "$match": { "field1": "a" }},
{ "$group": {
"_id": "$field2",
"data": {
"$push": "$$ROOT"
}
}}
])
Upvotes: 1