Групповые места, где был пользователь - PullRequest
0 голосов
/ 04 октября 2018

Я брожу, можно ли собрать все записанные места, которые посетил пользователь, и получить их список, но если пользователь был в том же месте, получить это место только один раз в выводе?

Вот мой пример данных:

{"userId": "abc123", "visited": "Berlin"}
{"userId": "abc123", "visited": "Copenhagen"}
{"userId": "abc123", "visited": "New York"}
{"userId": "abc123", "visited": "Berlin"}

Теперь, если я собираю его таким образом, я получаю Берлин дважды:

var allVisits = db.Collection('visits').find( { "userId" : "abc123" };

var allCities = [];

Я хотел бы получить массив со всеми городами, но только один раз.Как я могу это сделать?

Надеемся на помощь и заранее спасибо: -)

1 Ответ

0 голосов
/ 04 октября 2018

Вы можете использовать $addToSet оператор агрегирования с $group каскад.

db.Collection('visits').aggregate(
  { "$match": { "userId" : "abc123" }},
  { "$group": {
    "_id": null,
    "places": { "$addToSet": "$visited" }
  }}
)
...