我哪里做错了?我知道_id在数据库中,但我得到空结果。
@b = coll.find("_id" => "4db2ebee90036f010b000001")
谢谢
使用
coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data|
puts data.inspect
end
@b将包含游标,而不是结果。您还需要使用适当的对象id。
你可能想要这个:
@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
使用Ruby 1.9.3和mongoid 3.0.19
@coll = Coll.find( hash["_id"] )
或
@coll = Coll.find( "511296d2dfa18f07fa000009" )
查找记录。只能是一个,_id是主键,不能是双键
我会使用像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
使用,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