Tag: mongodb

如何在Mongoid中引用嵌入式文档?

使用Mongoid,假设我有以下类: class Map include Mongoid::Document embeds_many :locations end class Location include Mongoid::Document field :x_coord, :type => Integer field :y_coord, :type => Integer embedded_in :map, :inverse_of => :locations end class Player include Mongoid::Document references_one :location end 正如您所看到的,我正在尝试建模一个简单的游戏世界环境,其中地图嵌入位置,并且玩家将单个位置作为当前位置。 使用这种方法,当我尝试引用Player类的“location”属性时,我收到以下错误: Mongoid::Errors::DocumentNotFound: Document not found for class Location with id(s) xxxxxxxxxxxxxxxxxxx. 我的理解是,这是因为位置文档是嵌入式的,因此很难在其嵌入文档(Map)的范围之外引用。 这是有道理的,但我如何建模对嵌入式文档的直接引用?

运行时更改模型与mongodb / mongoid

我要在mongoid模型中添加几个字段,我知道没有使用MongoDB进行迁移但是如果我不继续删除数据库,使轨道完全“重新生成”数据库,它就不显示或使用新字段一点都没! 什么是最好的方式去这里? 有什么比放弃/重新打开mongodb更软的东西吗? 在此先感谢luca

如何使用Ruby和MongoId正确保存时区?

如果这是一个noob问题,请原谅我: 我有一个应用程序,用户可以在他们的个人资料中设置自己的时区。 当有人添加阵容(特定于应用程序的术语)时,我会执行以下操作: time = ActiveSupport::TimeZone.new(user.timezone).parse( “Wednesday, 26 October, 2011 13:30:00” ) # This outputs: 2011-10-26 13:30:00 +0200 – valid according to the user selected TZ 然后我保存阵容: Lineup.create({ :date => time.gmtime, :uid => user._id, :pid => product._id }) 这应该(理论上)将日期保存为gmtime,但在查看记录时我会得到以下信息: { “_id”: ObjectId(“4e9c6613e673454f93000002”), “date”: “Wed, 26 Oct 2011 13: 30: 00 +0200”, “uid”: “4e9b81f6e673454c8a000001”, “pid”: “4e9c6613e673454f93000001”, […]

MongoDB / Mongoid和Rails 3的日期时间没有填充

这是我的模型中的代码 include Mongoid::Document include Mongoid::Timestamps field :message, :type => String field :send_at, :type => DateTime 这是我的表格部分的代码 但是从不填充日期和时间。 我确保Mongo和Mongoid也是最新的。 不确定是否有我遗漏的东西。 [更新日志条目] Started POST “/notifis” for 127.0.0.1 at Mon Oct 18 05:48:05 -0400 2010 Processing by NotifisController#create as HTML Parameters: {“commit”=>”Create Notifi”, “authenticity_token”=>”/hrlnvA2Xn5NqGgCkPFAQV254IHPJEvZoLxOYNNUwhc=”, “_snowman”=>”☃”, “notifi”=>{“send_at(2i)”=>”10”, “is_sent”=>”0”, “send_at(3i)”=>”18”, “send_at(4i)”=>”09”, “message”=>”erwer”, “send_at(5i)”=>”48”, “send_at(1i)”=>”2010”}} MONGODB noti_development[‘notifis’].insert([{“send_at(2i)”=>”10”, “created_at”=>Mon Oct 18 09:48:05 […]

mongodb和mongomapper

我有一个rails应用程序,目前使用activerecord存储和查询产品。 每个产品都有一个类别和子类别,每个子类别由我可以在应用程序中创建的多个字段定义。 从此,当用户想要输入特定产品时,他们将与相关的表单字段一起呈现。 这已经变得非常复杂,自从听说过mongodb和mongomapper之后,我想或者希望我从一开始就使用mongomapper创建它! 问题是我想知道在mongodb中建模这个应用程序的最佳方法??? 我正在考虑使用具有公共字段的procuct模型,然后让类别模型inheritance自具有不同字段的产品模型。 这听起来不错吗? 问题也在于我希望用户能够在应用程序内创建自己的类别和字段。 我怎么能这样做,例如当用户创建具有速度和门数等字段的汽车类别时。然后我需要能够使用这些字段创建表格以供将来的汽车输入。 任何人可以帮助我的想法,指针或例子都会很棒。 非常感谢rick

mongomapper协会跳过重复

我有一个带有ObjectId数组的Document: Class Task key :user_id, Array many :userlist, class_name: ‘User’, :in => :user_id 在该Array中,我存储了不同的user_id值,有时会重复。 我可以看到重复的user_id使用: @task.user_id.each do |z| puts z end 但是当我使用以下方法获取和关联数据时: @task.userlist.each do |z| puts z.name end 我没有得到重复项:(,只有唯一的ID才能获得关联。为什么?

获取带符号的哈希作为轨道中mongo的键

Mongo ruby​​驱动程序似乎将结果放入一个以字符串为键的哈希。 有没有办法告诉它将密钥转换为符号?

使用MongoDb升级多个记录

我试图让MongoDB使用以下查询来追加多个记录,最终使用MongoMapper和Mongo ruby​​驱动程序。 db.foo.update({event_id: { $in: [1,2]}}, {$inc: {visit:1}}, true, true) 如果存在所有记录,则此方法可以正常工作,但不会为不存在的记录创建新记录。 以下命令具有shell所需的效果,但从ruby驱动程序可能并不理想。 [1,2].forEach(function(id) {db.foo.update({event_id: id}, {$inc: {visit:1}}, true, true) }); 我可以循环遍历我想要在ruby中插入的每个id,但这样就需要为每个项目访问数据库。 有没有办法从ruby驱动程序中只有一次数据库中的多个项目? 这里的最佳做法是什么? 使用mongomapper和ruby驱动程序,有没有办法在一个批处理中发送多个更新,生成如下所示的内容? db.foo.update({event_id: 1}, {$inc: {visit:1}}, true); db.foo.update({event_id: 2}, {$inc: {visit:1}}, true); 样本数据: 如果存在两条记录,则命令后的所需数据。 { “_id” : ObjectId(“4d6babbac0d8bb8238d02099”), “event_id” : 1, “visit” : 11 } { “_id” : ObjectId(“4d6baf56c0d8bb8238d0209a”), “event_id” : 2, “visit” […]

MongoDB Group使用Ruby驱动程序

我正在尝试带回一份年/月组合列表,其中包含用于描述博客post的计数。 这个想法是他们会这样显示: 2010年1月(1个post) 2009年12月(2个post) … 我已经设法使用MongoDB JS shell使其工作,并以有用的格式返回结果: db.posts.group({ keyf: function(x){ return { month: x.datetime.getMonth(), year:x.datetime.getFullYear() }; }, reduce: function(x,y){ y.count++ }, initial:{count:0} }) 结果: [ { “month” : 0, “year” : 2010, “count” : 3 }, { “month” : 0, “year” : 1970, “count” : 1 } ] 这很棒,正是我所追求的。 但是,尝试将其转换为适合ruby驱动程序的代码,我无法让它工作。 我查看了文档,根据我的理解,以下应该产生相同的结果(我使用MongoMapper,因此Post.collection ): @archive = […]

如何使用MongoDB Ruby Driver进行“分组”(分组)?

使用Ruby驱动程序与MongoDB Group相关 如果我想在SQL中执行以下操作: select page_id, count(page_id) from a_table group by page_id 我认为MongoDB的文档说 http://api.mongodb.org/ruby/current/Mongo/Collection.html#group-instance_method group(key, condition, initial, reduce, finalize = nil) # returns an array 所以从另一篇文章中,我正在使用: Analytic.collection.group( “fucntion (x) return {page_id : x.page_id}”, nil, {:count => 0}, “function(x, y) { y.count++ }” ) 但它实际上会回来 [{“count”=>47.0}] 这是集合中记录(文档)的总数。 以上是不正确的? 我以为密钥可能是一个静态字符串 http://kylebanker.com/blog/2009/11/mongodb-count-group/ db.pageviews.group( { key: {‘user.agent’: true}, initial: {sum: […]