Ruby Mongo驱动程序 - Find_by_Id

时间:2011-04-26 14:57:33

标签: ruby ruby-on-rails-3 mongodb

我在这里做错了什么?我知道_id在数据库中,但我得到空的结果。

@b = coll.find("_id" => "4db2ebee90036f010b000001")

由于

5 个答案:

答案 0 :(得分:17)

使用此:

coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data| 
   puts data.inspect 
end

答案 1 :(得分:9)

@b将包含游标,而不是结果。您还需要使用正确的对象ID。

你可能想要这个:

@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))

答案 2 :(得分:2)

使用Ruby 1.9.3和mongoid 3.0.19

@coll = Coll.find( hash["_id"] )

@coll = Coll.find( "511296d2dfa18f07fa000009" )
找到记录。只会是一个,_id是主键,它永远不会是双重的。

答案 3 :(得分:1)

我会使用first之类的东西返回一个对象,因为如果您的主要ID在数据库中重复,则会遇到更大的问题。语法取决于您的mongo gem版本,这个版本适用于2.1.0。

your_id = '4db2ebee90036f010b000001'
db = Client.new([ "localhost:27017" ], :database => "db")
coll = db[:testCollection]
res = coll.find(:_id => BSON::ObjectId(your_id)).first

答案 4 :(得分:0)

使用,Ruby版本2.3.1p112,mongo(gem)2.4.2和BSON(gem)4.2.2

以下为我工作

client = Mongo::Client.new(['127.0.0.1:3001'], :database=>'dbname')
collection = client[:users]
user = collection.find({_id:'XY3h5R7aJkh5FxFhJ'}).first