簡體   English   中英

在Mongo數據庫中插入Ruby對象數組

[英]Insert an array of Ruby objects in a Mongo database

所以,我正在使用Ruby MongoDB驅動程序,並且我想這樣插入和對象:

 db.insert_one({
  'game_id' => @token,
  'board' => {
    'tiles' => @board.tiles
  }
})

其中@board是Board類的實例。

class Board
 attr_accessor :tiles
  def initialize()
    @tiles = [Tile.new, Tile.new]
  end
end

和瓷磚

class Tile
  def initialize()
    @x = 1, @y = 1
  end
  def to_json(options)
    {"x" => @x, "y" => @y}.to_json
  end
end

因此,最后,“ tiles”字段應如下所示:

'tiles': [{x:1, y:1}, {x:1, y:1}]

我收到此錯誤:

undefined method `bson_type' for #<Tile:0x007ff7148d2440>

我正在使用的寶石:“ sinatra”,“ mongo(2.0.4)”和“ bson_ext”(使用Bundler.require都需要)。 謝謝!

你可以簡單地從集合變換@ board.tiles Objects ,以紅寶石的集合Hashes

class Tile
  def initialize()
    @x = 1, @y = 1
  end
  def raw_data
    {"x" => @x, "y" => @y}
  end
end

db.insert_one({
  'game_id' => @token,
  'board' => {
    'tiles' => @board.tiles.map(&:raw_data)
  }
})

對於更復雜的事情,我建議您使用mongoid http://mongoid.org/en/mongoid/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM