2013-12-18 12 views
14

Czy istnieje sposób na zapytanie o obiekty o nie takich samych wartościach w niektórych polach? Na przykład mam Records:Uzyskaj wyraźne wartości rekordów

{ id : 1, name : "my_name", salary : 1200 } 
{ id : 2, name : "my_name", salary : 800 } 
{ id : 3, name : "john", salary : 500 } 

Zapytanie: znaleźć wszystkie z NOT_THE_SAME (nazwa)

Chcę tylko rekordy o identyfikatorze 1 i 3, bo określono, że nie chcę rekordy z tej samej wartości w polu name lub 2 i 3, nie ma to znaczenia w tej sytuacji.

Odpowiedz

12

Można użyć db.collection.distinct wrócić szereg unikalnych wartości:

> db.test.distinct("name") 
[ "my_name", "john" ] 
7

Można również użyć odrębne zdanie z przefiltrowanej kolekcji. Na przykład, można uzyskać różne wartości nazw od wynagrodzeń ponad 800 z następującym zapytaniem:

db.test.distinct("name", { "salary": { $gt: 800 } }) 
1
db.runCommand ({ 
    distinct: "CollectionName", 
    key: "key", 
    query: { "createdDate": { 
     $gte:new ISODate("2017-04-04T23:59:59Z"), 
     $lte:new ISODate("2017-04-25T23:59:59Z")}} }) 

ta kwerenda pomaga znaleźć dane w kolekcji, pobiera wartość klucza ze wszystkimi dokumentami, które spełniają warunek między data

+0

O ile ten fragment kodu może rozwiązać pytanie, [w tym wyjaśnienie] (// meta.stackexchange.com/questions/114762/explaining-entirely-code-ans -answers) naprawdę pomaga poprawić jakość twojego posta. Pamiętaj, że odpowiadasz na pytanie przeznaczone dla czytelników w przyszłości, a te osoby mogą nie znać powodów sugestii dotyczących kodu. Proszę również starać się nie tłumić kodu za pomocą komentarzy wyjaśniających, co zmniejsza czytelność zarówno kodu, jak i objaśnień! – Carpetsmoker

+0

@Carpetsmoker - dodano komentarze, mam nadzieję, że to pomoże – GSK

Powiązane problemy