Конвертировать массив встроенных документов в массив элементов в mongoDB - PullRequest
0 голосов
/ 13 сентября 2018

Какой оператор запроса или агрегации я могу использовать для получения этого?

Ввод:

{"_id": "id1", "contacts": [{"phone": "xxx", "email":"id1@gmail.com"}, {"phone":"yyy"}, {"phone":"zzz", "email":"id1_1@gmail.com"}] }
{"_id": "id2", "contacts": [{"phone": "aaa", "email":"id2@gmail.com"}, {"phone":"bbb"}, {"phone":"ccc"}] }

Ввод:

(просто нужны номера телефонов, другие контакты.поля могут быть удалены)

{"_id": "id1", "contacts": ["xxx", "yyy", "zzz"] }
{"_id": "id2", "contacts": ["aaa", "bbb", "ccc"] }

1 Ответ

0 голосов
/ 13 сентября 2018

Просто используйте $project ступень конвейера агрегации.

db.collection.aggregate([
  {
    "$project": {
      "contacts": "$contacts.phone"
    }
  }
])

Выход

[
  { "_id": "id1", "contacts": [ "xxx", "yyy", "zzz" ] },
  { "_id": "id2", "contacts": [ "aaa", "bbb", "ccc" ] }
]
...