Qu'est-ce que je fais mal ici? Je sais que le _id est dans la base de données mais j'ai un résultat vide.Ruby Mongo Driver - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Merci
Qu'est-ce que je fais mal ici? Je sais que le _id est dans la base de données mais j'ai un résultat vide.Ruby Mongo Driver - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Merci
Utilisez ceci:
coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data|
puts data.inspect
end
@b contiendra un curseur, et non le résultat. Vous devez également utiliser un identifiant d'objet approprié.
Vous voulez sans doute ceci:
@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
Avec Ruby 1.9.3 et MongoId 3.0.19
@coll = Coll.find(hash["_id"])
ou
@coll = Coll.find("511296d2dfa18f07fa000009")
trouver l'enregistrement. Ne sera jamais qu'un, _id est la clé primaire, il ne peut jamais être double.
Je voudrais utiliser quelque chose comme first
qui renvoie un objet puisque vous avez de plus gros problèmes si votre ID primaire est dupliqué dans votre base de données. La syntaxe dépend de votre version mongo gem celle-ci est pour 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
L'utilisation, la version Ruby 2.3.1p112, mongo (pierre précieuse) 2.4.2 et BSON (pierre précieuse) 4.2.2
Les personnes suivantes ont travaillé pour moi
client = Mongo::Client.new(['127.0.0.1:3001'], :database=>'dbname')
collection = client[:users]
user = collection.find({_id:'XY3h5R7aJkh5FxFhJ'}).first
-t-elle quoi que ce soit si retour vous exécutez la même chose à la main en DB? –
@Vlad, j'utilise MongoHQ et en fait quand je recherche {_id: "4db2ebee90036f010b000001"} je n'obtiens aucun résultat. Cependant, je ne comprends pas pourquoi. La rangée est là. – donald