草庐IT

mongoid4

全部标签

ruby-on-rails - mongoid 批量更新

我想每小时更新大量文档。这里是相当简单的模型:classArticleincludeMongoid::Documentfield:article_nr,:type=>Integerfield:vendor_nr,:type=>Integerfield:description,:type=>Stringfield:eanfield:stockfield:orderedfield:eta所以每小时我都会得到一份新的库存list,其中:stock,:ordered和:eta“可能”已经改变我需要更新它们。编辑:库存list只包含:article_nr,:stock,:ordered,:eta

ruby-on-rails-3 - mongoid 唯一索引允许重复值

我有一个以用户名作为字段的集合。模型将此字段定义为唯一的。但是我能够在数据库中插入一个重复的值。classProfileincludeMongoid::DocumentincludeMongoid::Paperclipfield:usernameindex({username:1},{unique:true})end但该集合有2个相同的用户名{"_id":ObjectId("50b3b323421aa95da6000004"),"username":"marceloreuse"}{"_id":ObjectId("50b3b567421aa93d84000002"),"username"

ruby-on-rails - mongoid - 查询嵌入式文档

classFooincludeMongoid::Documentfield:name,type:Stringembeds_many:barsendclassBarincludeMongoid::Documentfield:name,type:Stringembedded_in:fooend有没有一种方法可以在这里查询所有的bars?在AR中,我会执行类似Bar.where(name:'something')之类的操作-只需给我所有符合某些条件的条形即可。就目前而言,我只能查询单个foo上的特定柱。`Foo.first.bars.where(name:'something')。我知道mo

ruby-on-rails - Mongoid 命名范围比较同一文档中的两个时间字段

我需要在Mongoid中创建一个命名范围,用于比较同一文档中的两个时间字段。比如scope:foo,:where=>{:updated_at.gt=>:checked_at}这显然行不通,因为它处理:checked_at作为一个符号,而不是实际的领域。关于如何做到这一点的任何建议?更新1这是我声明了这个范围的模型,去掉了很多额外的代码。classUserincludeMongoid::DocumentincludeMongoid::ParanoiaincludeMongoid::Timestampsfield:checked_at,:type=>Timescope:unresolved

ruby-on-rails - 何时索引,在 Mongoid 中索引什么?

我对索引有点陌生,但我对索引的用例很好奇。(我假设它使对索引字段的查询更快。)是否有确定索引什么以及何时索引的标准?我应该期待什么样的性能优势——特别是在Rails应用程序上使用Mongoid和MongoDb? 最佳答案 查看IndexesMongoDB文档和IndexingAdviceandFAQ,这里有很多很棒的信息。 关于ruby-on-rails-何时索引,在Mongoid中索引什么?,我们在StackOverflow上找到一个类似的问题: https

ruby-on-rails - 在 mongoid 中查询包含哈希的数组字段

我有一个这样的模型classUserincludeMongoid::Documentfield:c,as::categories,type:Arrayend我在上面存储信息是这样的:a=UserCheckin.newa.c=[{id:rand(1000),name:'a'},{id:rand(1000),name:'b'},{id:rand(1000),name:'c'}]a.save我不知道我是否通过在其上存储哈希来滥用数组类型,但问题是mongodb并没有提示它。如何查询类别名称为“a”或类别ID大于2的用户之类的内容?提前致谢, 最佳答案

ruby - Mongoid:根据嵌入文档数组的大小进行查询

这与这里的这个问题类似,但我不知道如何将其转换为Mongoid语法:MongoDBquerybasedoncountofembeddeddocument假设我有客户:{_id:...,订单:[...]}我希望能够找到所有具有现有订单的客户,即orders.size>0。我尝试过像Customer.where(:orders.size.gt=>0)这样的查询>无济于事。可以用exists?操作符来完成吗? 最佳答案 我更好的方法是使用MongoDB的native语法,而不是像您链接到的问题的已接受答案中所指出的那样诉诸方法或JavaS

ruby-on-rails - mongoid 中的货币表示

我应该如何使用Money使用MongoID?我应该将其配置为BigDecimal吗?在rails级别?对于ActiveRecord,我们有一个叫做Money的东西,但AFAIK它只支持AR 最佳答案 我也遇到了这个。不幸的是,BigDecimal以字符串形式存储在Mongodb中,因此它不会像float或整数那样让您对其求和、排序等。整数似乎是以美分存储值的方法,可能使用Moneygem对其进行抽象:https://github.com/RubyMoney/money我认为,Mongo在大多数现代机器上使用64位存储int,因此即使

ruby-on-rails - 使用 id 作为标准时的 Mongoid where vs find

当在我的查询中使用文档的id作为唯一标准时,两者之间有什么区别:Board.only(:_id).find(params[:board_id])和Board.where(_id:params[:board_id]).only(:_id)我唯一注意到的是,当使用方括号将结果括起来时,将结果打印为json 最佳答案 find返回一个文档。where返回符合条件的文档数组。 关于ruby-on-rails-使用id作为标准时的Mongoidwherevsfind,我们在StackOverflo

ruby-on-rails - Mongoid "no geo index :("错误

重现步骤:classVenuefield:coordinates,type:Arrayindex({coordinates:'2d'},{min:-180,max:180})end已经运行rakedb:mongoid:create_indexes尝试调用:Venue.geo_near([@lat,@long])得到:Moped::Errors::OperationFailure:Theoperation:#"venues",:near=>[43.670906,-79.393331],:query=>{},:spherical=>true}@fields=nil>failedwither