Ответ 1
Вы можете использовать db.collection.distinct
, чтобы вернуть массив уникальных значений:
> db.test.distinct("name")
[ "my_name", "john" ]
Есть ли способ запроса объектов с не одинаковыми значениями в каком-либо поле? Например, у меня есть записи:
{ id : 1, name : "my_name", salary : 1200 }
{ id : 2, name : "my_name", salary : 800 }
{ id : 3, name : "john", salary : 500 }
Запрос: найти все с NOT_THE_SAME (имя)
Мне просто нужны записи с идентификаторами 1 и 3, потому что я указал, что мне не нужны записи с одинаковым значением в поле name
или 2 и 3, в этой ситуации это не имеет значения.
Вы можете использовать db.collection.distinct
, чтобы вернуть массив уникальных значений:
> db.test.distinct("name")
[ "my_name", "john" ]
Вы также можете использовать отдельное предложение с фильтрованной коллекцией. Например, вы можете получить разные значения имен с зарплатой более 800 со следующим запросом:
db.test.distinct("name", { "salary": { $gt: 800 } })
db.runCommand ( {
distinct: "CollectionName",
key: "key",
query: { "createdDate": {
$gte:new ISODate("2017-04-04T23:59:59Z"),
$lte:new ISODate("2017-04-25T23:59:59Z")}} } )
этот запрос помогает находить данные в коллекции, извлекает значение ключа из всех документов, которые удовлетворяют условию между датой
db.test.aggregate([{$group: {_id: "$name", salary: {$max: "$salary"}}}])
должен перечислять все имена с их зарплатой.
$max
возвращает самую высокую зарплату за элемент. Вы также можете выбрать $first
и т.д., См. https://docs.mongodb.com/manual/reference/operator/aggregation/group/#accumulator-operator.