MongoDB Compass: выбрать различные значения поля - PullRequest
0 голосов
/ 01 ноября 2019

Я использую MongoDB Compass и у меня нет mongo Shell. Мне нужно построить запрос с помощью инструмента mongoDB Compass, чтобы выбрать отдельные значения поля «жанр» из моей коллекции. Может ли кто-нибудь помочь здесь, пожалуйста?

compass tool screenshot

Пример ввода:

{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34e"},"title":"Bateau-mouche sur la Seine","year":{"$numberInt":"1896"},"imdbId":"tt0000042","genre":["Documentary”,”Short”],"viewerRating":{"$numberDouble":"3.8"},"viewerVotes":{"$numberInt":"17"},"director":"Georges Mlis"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c340"},"title":"Watering the Flowers","year":{"$numberInt":"1896"},"imdbId":"tt0000035","genre":["Short”],"viewerRating":{"$numberDouble":"5.3"},"viewerVotes":{"$numberInt":"33"},"director":"Georges M�li�s"}
{"_id":{"$oid":"58c59c6a99d4ee0af9e0c34a"},"title":"The Boxing Kangaroo","year":{"$numberInt":"1896"},"imdbId":"tt0000048","genre":["Short”],"viewerRating":{"$numberDouble":"5.2"},"viewerVotes":{"$numberInt":"48"},"director":"Birt Acres"}

Ожидаемый результат : документальный фильмКороткий

Ответы [ 2 ]

1 голос
/ 04 ноября 2019

Вы можете сделать это через среду агрегации в Compass, используя $ unwind и $ group . $ Unwind выполняется для создания уникального документа для каждого элемента в целевом массиве, что позволяет оператору $ addToSet на этапе $ group затем захватывать жанры как отдельные элементы.

Трубопровод:

[
  {
    $unwind: {
      path: '$genre',
      preserveNullAndEmptyArrays: true
    }
  },
  {
    $group: {
      _id: null,
      uniqueGenres: { $addToSet: '$genre' }
    }
  }
]

См. Скриншот ниже для примера компаса:

enter image description here

0 голосов
/ 06 ноября 2019

Спасибо, Кристиан за ваш ответ. Я разработал приведенный ниже ответ на основе вашего предложения.

Мой конвейер:

[{$project: {
  genres: {$split: ["$genre",", "  ]}

}
}, {$unwind: {
  path: "$genres",
  includeArrayIndex: 'string',
  preserveNullAndEmptyArrays: true

  }}, {$group: {
  _id: null,
  unique_genres: {
    $addToSet: '$genres'
  }
}}]

compass agregation screenshot

...