【问题标题】:Get embedded elements based on condition with mongoid使用 mongoid 根据条件获取嵌入元素
【发布时间】:2011-08-27 07:25:13
【问题描述】:

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

应用 --> 订单 -->

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

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

【问题讨论】:

    标签: ruby-on-rails mongoid mongodb


    【解决方案1】:

    看看这个问题:Mongoid / Mongodb and querying embedded documents

    在你的情况下:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-02-08
      • 1970-01-01
      • 1970-01-01
      • 2020-06-06
      • 2019-02-02
      • 2019-07-16
      • 1970-01-01
      相关资源
      最近更新 更多