как вывести с группой по c поля в Pymon go? - PullRequest
0 голосов
/ 27 апреля 2020

существует коллекция в 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, но не смог достичь ожидаемого результата

как добиться ожидаемого результата.

1 Ответ

1 голос
/ 27 апреля 2020

$match отфильтрует документы, где field1 не равно a.

$group сгруппирует данные с последующим выражением в _id и $push в $$ROOT документ в поле данных.

db.collection.aggregate([
  { "$match": { "field1": "a" }},
  { "$group": {
    "_id": "$field2",
    "data": {
      "$push": "$$ROOT"
    }
  }}
])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...