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

Pobierz pojedynczą właściwość z dokumentu

W MongoDB 2.0 i starszych nie jest to możliwe. To, co chcesz zrobić, to zwrócić określony element tablicy - ale nie to właśnie robi twoja projekcja, zwróci po prostu całą tablicę, a następnie element z każdego z nich.

Jednak w wersji 2.2 (rc2 w momencie pisania tej odpowiedzi) sprawy nieco się poprawiły. Możesz teraz używać $elemMatch jako część Twojej projekcji (patrz SERVER-2238 aby uzyskać szczegółowe informacje), aby wycofać tylko wymagany element tablicy. Spróbuj więc czegoś takiego:

db.foo.find({"ID":"123",'a':{$elemMatch:{'x':"/"}}},{_id : 0, 'a.$': 1})
//returns
{ "a" : [ { "x" : "/", "y" : "2000", "z" : "1000" } ] }

Lub po prostu użyj $elemMatch w samej projekcji, która może wydawać się czystsza:

db.foo.find({"ID":"123"},{_id : 0, 'a':{$elemMatch:{'x':"/"}}})
//returns 
{ "a" : [ { "x" : "/", "y" : "2000", "z" : "1000" } ] }

Więc teraz przynajmniej zwrócona tablica jest tylko tą, która zawiera tylko żądane wpisy i możesz po prostu odwołać się do odpowiedniego elementu z (prognozy elemMatch na poddokumencie nie są jeszcze obsługiwane).

Wreszcie, w wersji 2.2 mamy strukturę agregacji i jedną z rzeczy, które może zrobić (za pomocą $project operatora, jest zmiana kształtu dokumentów i zmiana poddokumentów i elementów tablicy na tablice najwyższego poziomu. Aby uzyskać pożądany wynik, zrobiłbyś coś takiego:

db.foo.aggregate( 
        {$match : {"ID":"123"}},  
        {$unwind : "$a"},  
        {$match : {"a.x":"/"}},  
        {$project : {_id : 0, z : "$a.z"}}
)

Wynik wygląda tak:

{ "result" : [ { "z" : "1000" } ], "ok" : 1 }



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Jak uzyskać listę baz danych mongodb i listę kolekcji z aplikacji ruby ​​on rails?

  2. Co należy wiedzieć, kiedy rozpocząć pracę z MongoDB w środowisku produkcyjnym — dziesięć wskazówek

  3. Jak mogę zapisać pustą tablicę w mongodb za pomocą js

  4. Jak monitorować serwery baz danych za pomocą ClusterControl CLI

  5. MongoDB v2.4.9 sortuj według pola logicznego