¿Qué estoy haciendo mal aquí? Sé que _id está en la base de datos pero obtengo un resultado vacío.Ruby Mongo Driver - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Gracias
¿Qué estoy haciendo mal aquí? Sé que _id está en la base de datos pero obtengo un resultado vacío.Ruby Mongo Driver - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Gracias
Utilice esta:
coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data|
puts data.inspect
end
@b contendrá un cursor, no el resultado. También necesita usar una identificación de objeto adecuada.
es probable que desee esto:
@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
con Ruby 1.9.3 y MongoId 3.0.19
@coll = Coll.find(hash["_id"])
o
@coll = Coll.find("511296d2dfa18f07fa000009")
encontrar el registro. Solo será uno, _id es la clave principal, nunca puede ser doble.
Usaría algo como first
que devuelve un objeto ya que tiene problemas mayores si su identificación principal está duplicada en su base de datos. La sintaxis depende de la versión de tu mongo gem, esta es para 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
Uso, Ruby versión 2.3.1p112, mongo (GEM) y 2.4.2 BSON (GEM) 4.2.2
Los siguientes trabajó para mí
client = Mongo::Client.new(['127.0.0.1:3001'], :database=>'dbname')
collection = client[:users]
user = collection.find({_id:'XY3h5R7aJkh5FxFhJ'}).first
¿Vuelve nada si ¿ejecutas lo mismo a mano en db? –
@Vlad, estoy usando MongoHQ y, de hecho, cuando busco {_id: "4db2ebee90036f010b000001"} no obtengo ningún resultado. Sin embargo, no entiendo por qué. La fila está ahí. – donald