Список всех значений определенного поля в mongodb

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

db.collection:

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "x" : 1 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "x" : 2 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "x" : 3 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "x" : 4 }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "x" : 5 }

"db.collection.ListAllValuesForfield(х)" Результат: [1,2,3,4,5]

Кроме того, что, если это поле было массивом?

{ "_id" : ObjectId("51a7dc7b2cacf40b79990be6"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be7"), "y" : [3,4] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be8"), "y" : [5,6] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990be9"), "y" : [1,2] }
{ "_id" : ObjectId("51a7dc7b2cacf40b79990bea"), "y" : [3,4] }

"db.collection.ListAllValuesInArrayField(у)" Результат: [1,2,3,4,5,6,1,2,3,4]

Кроме того, могу ли я сделать этот массив уникальным? [1,2,3,4,5,6]

Ответ 1

db.collection.distinct('x')

должен предоставить вам массив уникальных значений для этого поля.

Ответ 2

Это вернет массив документов, содержащий только это значение x...

db.collection.find(
    { },
    { x: 1, y: 0, _id:0 }
)

Ответ 3

Примечание: Мой ответ - это вилка из исходного ответа.

Перед любыми "большими пальцами" здесь "превью" принятого ответа:).


db.collection.distinct("NameOfTheField")

Находит отдельные значения для определенного поля в одной коллекции или представлении и возвращает результаты в массиве.

Ссылка: https://docs.mongodb.com/manual/reference/method/db.collection.distinct/

Ответ 4

Как насчет производительности? Есть ли лучший способ сделать это?