2011-04-26 101 views
12

我在這裏做錯了什麼?我知道_id在數據庫中,但是我得到空的結果。Ruby Mongo驅動程序 - Find_by_Id

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

感謝

+0

它,如果任何回報你在db中執行相同的操作? – 2011-04-26 15:15:13

+0

@Vlad,我使用的是MongoHQ,實際上當我搜索{_id:「4db2ebee90036f010b000001」}我沒有得到任何結果。但是,我不明白爲什麼。該行在那裏。 – donald 2011-04-26 15:20:53

回答

16

使用此:

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

@b將包含一個光標,而不是結果。您還需要使用適當的對象ID。

你可能想這樣的:

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

使用Ruby 1.9.3和3.0.19 mongoid

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

@coll = Coll.find("511296d2dfa18f07fa000009") 

查找記錄。只會是一個,_id是主鍵,它永遠不會是雙重的。

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 
0

使用,紅寶石版本2.3.1p112,蒙戈(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 
相關問題