草庐IT

mongoid3

全部标签

ruby - 我可以在不坚持的情况下删除 Mongoid 中的嵌入式文档吗?

绝对与thisquestion有关,但既然没有明确的答案,我觉得我应该再问一次。是否有任何方法可以从Mongoidembeds_many关系中删除嵌入式文档,而无需持久化?我想修改内存中的嵌入式文档数组-然后通过单个UPDATE操作保留所有更改。具体来说,我想:修改嵌入式文档数组(添加嵌入式文档/删除嵌入式文档/编辑嵌入式文档等)。可能对TLD进行其他更改。通过一次数据库调用保存所有更改。 最佳答案 可以使用Mongoid删除嵌入文档而不保存。诀窍是使用assign_attributes从父对象进行更改。例如:classMyPare

mongodb - mongoid 中的排序和分组

我想要按年龄排序的人群我试过这样的东西Person.only(:name).asc(:age).group但没有按年龄排序。我该怎么做?我正在使用mongoidbeta19。 最佳答案 如果我没记错的话,一旦你打电话Person.only(:name)Mongoid基本上认为集合只有那个字段,所以一旦您尝试按年龄排序,就没有年龄字段可以排序,所以它什么都不做。尝试Person.asc(:age).only(:name).group或者可能Person.asc(:age).only([:name,:age]).group

ruby-on-rails - mongoid update_attributes 改变数据类型

我正在创建一个简单的Rails应用程序来修改现有mongo数据库中的数据。我正在使用mongoid进行交互,并且可以很好地读取/销毁对象。问题是我的mongo文档有一个“节点”,它是一堆键值对,根据记录的不同而有所不同。当我像这样加载记录时:MongoObject.find(BSON::ObjectId('ABC1234567890'))=>#11,"id"=>"logIns"}>我正在使用标准Rails表单来更新值,因此发布数据如下所示:{"commit"=>"Edit","utf8"=>"✓","id"=>"ABC1234567890","mongo_object"=>{"node

ruby-on-rails - Mongoid:按嵌套子值排序

classBoxembeds_many:thingsafter_init:add_default_thingsdefadd_default_thingsself.things.build(title:"Socks",value:2)self.things.build(title:"Ring",value:1)endendclassThingfield:titlefield:value,type:Integerend所有盒子都有一些默认的东西:socks和戒指。每个人都可以将这个或其他东西添加到一个盒子里。所以现在我需要按socks数量订购所有盒子:Box.order_by(:thing

mongodb - Mongoid 5.0 支持 $lookup

有谁知道最新的5.0版本的Mongoidgem是否支持$lookup?未提及mongoiddocs. 最佳答案 您可以像这样将用于查找的mongoshell查询转换为mongoid查询。我很难弄清楚这一点。如果对任何人有帮助,请在此发布。clookup={'$lookup':{'from':"contacts",'localField':"_id",'foreignField':"account_id",'as':"contacts"}}sort={'$sort':{'_id.year':1,'_id.month':1}}docs=

ruby-on-rails - 带空格的mongoid数组

我在mongoid中使用一个数组来存储用户角色,它大部分工作正常,但我遇到了问题,rails将空白传递给一个数组,然后mongoid保存它。["","admin","editor","author"]Formtastic会自动执行此操作以避免另一个问题,我会得到什么。但是问题是mongoid保存的是数组中的空白。我怎样才能告诉它忽略空白?代码:field:roles,:type=>Array,:default=>["author"]##USERROLESROLES=%w[admineditorauthor]classargs)endend我确定我可以在before_save之前进行回调

ruby-on-rails - 使用 Mongoid 时在测试中引发质量分配异常

当使用ActiveRecord时,您可以通过将此行放在config/environments/test.rb中将其配置为在测试中引发批量分配异常:config.active_record.mass_assignment_sanitizer=:strict有没有办法用Mongoid完成同样的事情? 最佳答案 通过阅读代码,Mongoid使用ActiveModel进行批量分配保护。这与Rails中的完全相同,但配置似乎没有完全连接。从实现中我可以了解到这是发生了什么:attributes.rbassign_attributes调用pro

ruby-on-rails - 通过 _type 字段实例化 mongoid 子类

从Mongoid文档我看到如果我有以下内容:classBaseincludeMongoid::DocumentendclassInheritedA我可以执行以下操作,这些操作将与“_type”属性一起存储。a=InheritedA.newa.saveMongoid将创建以下文档。{_type:"InheritedA"}我的问题是稍后我有一个只有String_type值的函数,我希望实例化正确的类型。我试过这个:Base.new({_type:mytype});但是,Mongoid认为这是一个动态属性并拒绝了它。我知道打开动态属性不是正确的做法,因为我不想在一般情况下允许这种行为。我想避

mongodb - 如何在 Mongo 控制台和 Mongoid 中执行此查询?

我正在尝试学习如何以更高级的方式查询Mongo。假设我的数据结构是这样的:{"_id":"-bcktick-ajman-ae-292932","asciiname":"`Ajman","alternatenames":[{"isolanguage":"no","alternateNameId":2698358,"alternateName":"Ajman"},{"isolanguage":"en","alternateNameId":2698357,"alternateName":"Ajman"}]}所以要找到Ajman很容易:db.cities.find({"asciiname":"

ruby-on-rails-3 - Mongoid,如何通过 references_one 关联(以及后续关联)进行 order_by?

简单模型:classhatembedded_in:ownerfield:colorendclassownerembedds_one:hatreferenced_in:housefield:nameendclasshousereferences_one:ownerfield:numberend简单地说,我们有与所有者关联的房屋集合,所有者可以有一顶彩色帽子。我可以简单地按编号对房子进行排序:House.all.order_by([[:number,:asc]])但我想要的是以房主的名义订购房子,理想情况下我想写:House.all.order_by([[:'owner.name',:as