Ruby Mongo Driver - Find_by_Id - PullRequest
       2

Ruby Mongo Driver - Find_by_Id

12 голосов
/ 26 апреля 2011

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

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

Спасибо

Ответы [ 5 ]

17 голосов
/ 26 апреля 2011

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

coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data| 
   puts data.inspect 
end
9 голосов
/ 26 апреля 2011

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

Возможно, вы хотите это:

@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
2 голосов
/ 07 февраля 2013

С Ruby 1.9.3 и mongoid 3.0.19

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

или

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

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

1 голос
/ 17 сентября 2015

Я бы использовал что-то вроде 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
0 голосов
/ 24 июля 2017

Using, 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...