我在这里做错了什么?我知道_id在数据库中,但我得到空的结果。
@b = coll.find("_id" => "4db2ebee90036f010b000001")
由于
答案 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