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

Pole wyboru Mongodb, aby zwrócić osadzony dokument w tablicy

Tak, ale nie tak, jak chcesz. Jeśli wykonasz następujące czynności, odzyskasz tylko pierwszy element tablicy:

coll.find({_id:'2'}, { 'objects.0': 1})

Jednak to, czego naprawdę chcesz, to coś, co wygląda następująco:

coll.find({_id:'2', 'objects._id': '3'}, { 'objects.$' : 1})

Oczywiście to nie działa w MongoDB.

Patrząc na Twoje inne pytanie , jest to jeden z powodów używania „obiektu osadzonego” zamiast „tablicy obiektów”. Za pomocą „osadzonego obiektu” możesz wykonać następujące czynności:

coll.find({_id:'2'}, {'objects.3': 1}) // where 3 is the id of the third object

Dzięki temu możesz wybrać tylko „osadzone obiekty”, których potrzebujesz.

Rzecz w MongoDB polega na tym, że dokument nadrzędny jest zawsze pobrano. Zapytania zwracają dokumenty najwyższego poziomu. To jest wypiekane w całej architekturze. Nawet jeśli zażądasz tylko fragmentu dokumentu, serwer nadal musi załadować cały dokument do pamięci przed udostępnieniem żądanego fragmentu.

Jedynym sposobem na obejście tego może być nowa Struktura agregacji , ale to nie jest jeszcze w stabilnej gałęzi.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Optymalizacja - znajdź wszystkie pola w schemacie Mongoose MongoDB

  2. Zagnieżdżona tablica aktualizacji MongoDB

  3. Spring Data MongoRepository Zapisywanie obiektów o różnej liczbie pól

  4. node js mongodb usuń klucz błędu $lte nie może zaczynać się od '$'

  5. grupuje według miesiąca i roku za pomocą mongoose.js