2013-06-06 19 views
5

Ho la seguente db query in MongoDB che restituisce esattamente quello che mi serve:Pluck multiple e/o nidificate campi mongoid

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

Nota campo 3 è un hash, e la chiave usata qui è la stessa per campo1 per il valore nel campo 1.

Come posso convertire questa query in mongoid? Ci sono due questioni principali qui, e non riesco a trovare qualsiasi cosa online per uno dei due individualmente:

  1. io non riesco a capire la sintassi per entrambi spennare due campi contemporaneamente
  2. non riesco a trovare il sintassi per lo svuotamento di un campo nidificato.

Grazie!

risposta

5

Per filtrare/proiettare uno o più campi, è possibile utilizzare Queryable.only trovato a http://mongoid.org/en/origin/docs/options.html.

L'esempio riportato su quella pagina:

queryable.only(:name, :age) 

Per i campi nidificati, è possibile utilizzare le stringhe invece dei simboli nei parametri:

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

Mongoid ha una funzione pluck ora.

mongoid#pluck

Esempio:

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

a meno che non si cura di duplicati si dovrebbe usare '# distinct' invece di' # pluck' Vedere questa domanda per più: http://stackoverflow.com/q/37333137/2047418 –