Как найти документ с некоторыми ключами без повторяющегося значения? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть документ Keelung, в котором есть массив movie с 6 объектами.

Я хочу найти документ db.getCollection('Keelung').find({}), но без повторяющегося значения в enName.

enter image description here

Например, если есть два значения enName, равное Truth or Dare, моя команда запроса вернет 5 объектов.

Понятия не имею, как этого добиться, попробуйте db.getCollection('Keelung').find({ enName : true, dropDups : true }), очевидно, не правильно.

Есть ли способ добиться этого в mongodb? Или я должен отфильтровать его в передней части?

Буду признателен за любую помощь. Заранее спасибо.

Согласно @Sergio предлагаю и я найду Google $addToSe

db.getCollection('Keelung').aggregate([
  { $unwind: '$data' },
  { $group: { _id: '$_id', movie: { $addToSet: '$enName' } } }
]);

Ничего не произошло, я понятия не имею, как использовать запрос поиска в этой команде ...

1 Ответ

0 голосов
/ 02 июля 2018

Вам нужно $group агрегация здесь

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