2011-05-17 5 views
2

J'utilise des rails et mongodb (mongoid gem). J'ai besoin de créer un formulaire de sélection avec des éléments spécifiques qui sont incorporés dans un document. le document ressemble à ceci:Obtenir des éléments incorporés basés sur la condition avec mongoid

App -> Commander ->Paquet

Je veux juste les app-documents où paquet a une valeur spécifique. un conseil pour y parvenir? J'ai essayé de la façon suivante, mais ne fonctionne pas:

@apps = current_user.apps.order.all(conditions: { order.package: 2 }) 

Répondre

5

Vérifiez cette question: Mongoid/Mongodb and querying embedded documents

Dans votre cas:

@apps = App.where("orders.packages.name" => "supper").all 

Une façon de tester dans le shell mongo:

app = {name:"yo"} 
app.orders = [] 
order = {name:"1"} 
order.packages = [] 
package = {name:"supper"} 
order.packages.push package 
app.orders.push(order) 
db.apps.save(app) 
db.apps.find() 

# { "_id" : ObjectId("4dd288f139ead04b2cde11a6"), "name" : "yo", "orders" : [ { "name" : "1", "packages" : [ { "name" : "supper" } ] } ] } 

db.apps.find({"orders.packages.name":"supper"}); 
{ "_id" : ObjectId("4dd288f139ead04b2cde11a6"), "name" : "yo", "orders" : [ { "name" : "1", "packages" : [ { "name" : "supper" } ] } ] } 
Questions connexes