2013-06-06 12 views
5

Mam następujący db zapytania w MongoDB, która zwraca dokładnie to, czego potrzebuję:zrywać wielokrotne i/lub zagnieżdżone pola na mongoid

db.collection.find({field1: 2801394}, {name: 1, field2: 1, _id: 1, "field3.2801394": 1}) 

Uwaga polu 3 jest hash, a klucz użyty tutaj jest taka sama jak dla pola 1 o wartość w polu 1.

Jak mogę zamienić to zapytanie na mongoid? Istnieją dwa główne problemy tutaj, i nie mogę znaleźć nic online dla każdej z osobna:

  1. Nie mogę dowiedzieć się składni obu wyrywanie dwóch pól na raz
  2. nie mogę wybrać składnia do wyskubywania zagnieżdżonego pola.

Dzięki!

Odpowiedz

5

Do filtrowania/wyświetlania jednego lub więcej pól można użyć Queryable.only znalezionego pod http://mongoid.org/en/origin/docs/options.html.

Przykład podany na tej stronie:

queryable.only(:name, :age) 

Dla pól zagnieżdżonych, można użyć zamiast ciągów symboli w parametrach:

queryable.only(:name, :field2, :_id, 'field3.2801394') 
1

Mongoid ma teraz pluck funkcję.

mongoid#pluck

Przykład:

Model.where(conditions).pluck(:specific_field) 
+0

chyba że dbasz o duplikaty należy użyć '# distinct' zamiast' # pluck' Zobacz więcej na to pytanie: http://stackoverflow.com/q/37333137/2047418 –

Powiązane problemy