MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak sortować wyniki zapytań mongodb na podstawie poddokumentów

Możesz użyć cursor.sort() sortować na wielu polach (w zasadzie kombi) w tym samym czasie, ale nie sądzę, aby działało to podczas sortowania zarówno w dokumencie, jak i w polu poddokumentu w tym samym czasie. Gdybyś miał sortować na dwóch różnych polach górnego dokumentu lub na dwóch różnych polach poddokumentu, to chyba byłoby dobrze.

Możesz więc uzyskać podobny wynik, używając agregacji struktura. Wszystko, co musisz zrobić, to w zasadzie rozbić tablice subs pole, a następnie sortowanie ich.

Możesz zrobić coś takiego:

db.col.aggregate({$unwind:'subs'}, {$sort:{id:1,'subs.time':1}});

Z powyższym kodem powinieneś otrzymać wynik podobny do tego:

 { 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 1, val: 'ab' }
},{ 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 20, val: 'cs' }
},{ 
    id: 1, 
    type: 'strs', 
    subs: 
        { time: 50, val: 'be' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 12, val: 'a' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 20, val: 'b' }
},{ 
    id: 2, 
    type: 'newname', 
    subs: 
        { time: 30, val: 'c' }
}


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Sprawdź, czy zainstalowany jest sterownik MongoDB PHP

  2. mongodb stronicowania w oparciu o zakres

  3. MongoDB + Python - bardzo wolne proste zapytanie

  4. przywracanie zrzutu za pomocą mongodb nie powiedzie się

  5. ArrayFilter w manguście