Получить встроенные элементы на основе условия с Mongoid - PullRequest
3 голосов
/ 17 мая 2011

Я использую рельсы и Mongodb (Mongoid Gem). Мне нужно создать форму выбора с конкретными элементами, которые встроены в документ. документ выглядит так:

Приложение -> Заказ -> Пакет

Я хочу получить только документы приложения, в которых пакет имеет определенное значение. Любой совет, как этого добиться? Я пробовал следующий способ, но не работает:

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

1 Ответ

6 голосов
/ 17 мая 2011

Проверьте этот вопрос: Mongoid / Mongodb и запрос встроенных документов

В вашем случае:

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

Способ тестирования в оболочке Монго:

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" } ] } ] }
...