Co ja tu robię źle? Wiem, że _id jest w bazie danych, ale otrzymuję pusty wynik.Sterownik Ruby Mongo - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Dzięki
Co ja tu robię źle? Wiem, że _id jest w bazie danych, ale otrzymuję pusty wynik.Sterownik Ruby Mongo - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Dzięki
Użyj tego:
coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data|
puts data.inspect
end
@b będzie zawierać kursor, a nie wynik. Musisz również użyć identyfikatora obiektu właściwego.
Prawdopodobnie chcesz to:
@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
z Ruby 1.9.3 i mongoid 3.0.19
@coll = Coll.find(hash["_id"])
lub
@coll = Coll.find("511296d2dfa18f07fa000009")
znalezienia rekordu. Będzie zawsze tylko jeden, aid jest kluczem podstawowym, nigdy nie może być podwójne.
Chciałbym użyć czegoś w rodzaju first
, która zwraca obiekt, ponieważ masz większe problemy, jeśli podstawowy identyfikator jest duplikowany w bazie danych. Składnia zależy od twojej wersji gem mongo, która jest przeznaczona dla wersji 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
Korzystanie Ruby wersja 2.3.1p112, Mongo (gem) 2.4.2 i BSON (gem) 4.2.2
Następujące pracował dla mnie
client = Mongo::Client.new(['127.0.0.1:3001'], :database=>'dbname')
collection = client[:users]
user = collection.find({_id:'XY3h5R7aJkh5FxFhJ'}).first
to jeśli nic powrotu możesz wykonać to samo ręcznie w db? –
@ Vlad, Używam MongoHQ iw rzeczywistości kiedy szukam {_id: "4db2ebee90036f010b000001"} Nie otrzymuję wyników. Jednak nie rozumiem dlaczego. Tam jest rząd. – donald