Подтвердить что ты не робот

Драйвер Ruby Mongo - Find_by_Id

Что я здесь делаю неправильно? Я знаю, что _id находится в базе данных, но я получаю пустой результат.

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

Спасибо

4b9b3361

Ответ 1

Используйте это:

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

Ответ 2

@b будет содержать курсор, а не результат. Вам также необходимо использовать собственный идентификатор объекта.

Вероятно, вы хотите:

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

Ответ 3

С Ruby 1.9.3 и mongoid 3.0.19

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

или

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

найдите запись. Будет только один, _id является первичным ключом, он никогда не может быть двойным.

Ответ 4

Я бы использовал нечто вроде first, которое возвращает объект, так как у вас большие проблемы, если ваш основной идентификатор дублируется в вашей базе данных. Синтаксис зависит от версии вашего монго-гема, для которой он равен 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

Ответ 5

Использование 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