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

Dokument podrzędny zagregowany/projektu jako dokument najwyższego poziomu w mongo

Jeśli masz wiele, wiele pól w poddokumencie i od czasu do czasu jest on aktualizowany o nowe pola, wówczas projekcja nie jest realną opcją. Na szczęście od wersji 3.4 MongoDB ma nowego operatora o nazwie $replaceRoot .

Wszystko, co musisz zrobić, to dodać nowy etap na końcu potoku.

db.getCollection('sample').aggregate([
    {
        $replaceRoot: {newRoot: "$command"}
    },
    {
        $project: {score: 0 } //exclude score field
    }
])

Dałoby to pożądany wynik.

Zauważ, że w przypadku agregacji (zwłaszcza po $group etapie) dokument „polecenie” może być tablicą i zawierać wiele dokumentów. W takim przypadku musisz $unwind tablica jako pierwsza, aby móc użyć $replaceRoot .



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Zapytanie o zagnieżdżoną tablicę w MongoDb

  2. Jak używać zapytania ze zmienną mangustą?

  3. Networkx nigdy nie kończy obliczania centralności między dwoma milionami węzłów

  4. Jak używać operatora $in w mongodb z dwoma polami w java

  5. mongoose geojson w schemacie, błąd nie można wyodrębnić kluczy geograficznych