使用 mongoid 根据条件获取嵌入元素

发布于 2024-11-07 18:43:45 字数 292 浏览 0 评论 0原文

我使用 Rails 和 mongodb (mongoid gem)。我需要创建一个选择表单,其中包含嵌入文档中的特定元素。该文档如下所示:

App -->订单--> Package

我只想获取 package 具有特定值的应用程序文档。有什么建议如何实现这一目标吗?我尝试了以下方法,但不起作用:

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

i use rails and mongodb (mongoid gem). i need to create a select form with specific elements which are embedded in a document. the document looks like this:

App --> Order --> Package

I want to get just the app-documents where package has a specific value. any advice how to achieve this? I tried the following way, but doesn't work:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢华的一滴泪 2024-11-14 18:43:45

查看这个问题: Mongoid / Mongodb 和查询嵌入文档

在您的情况下:

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

在mongo shell中测试的一种方法:

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

Check out this question: Mongoid / Mongodb and querying embedded documents

In your case:

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

A way to test in the mongo shell:

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" } ] } ] }
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文