MongoDB - Найти уникальные имена в коллекции - PullRequest
1 голос
/ 30 октября 2019

давайте предположим, что у меня есть такая коллекция

var list= [{name : "Bob", age : "22"},{name : "John", age : "21"}, {name : "Pedro", age : "15"}, {name : "Bob", age : "11"}, {name : "Mark", age : "24"}]

Как найти использование MongoDB с уникальными именами map-Reduce и Agragram-Framework? Результат должен быть: Джон, Педро, Марк

1 Ответ

2 голосов
/ 30 октября 2019

Вы можете использовать $ отлично (вернет все уникальные значения)

db.collection.distinct("name")

[
    "Bob",
    "John",
    "Pedro",
    "Mark"
]

Агрегация MongoDB: $ group где вы можете фильтровать после группировки значений(Примечание. Агрегация возвращает список объекта {key: value})

db.collection.aggregate([
  {
    $group: {
      _id: "$name",
      count: {
        $sum: 1
      }
    }
  },
  {
    $match: {
      count: 1
    }
  },
  {
    $group: {
      _id: null,
      unique: {
        $push: "$_id"
      }
    }
  },
  {
    $project: {
      _id: 0
    }
  }
])

[
  {
    "unique": [
      "Pedro",
      "Mark",
      "John"
    ]
  }
]

MongoPlayground

...