Tôi đang làm gì sai ở đây? Tôi biết _id nằm trong cơ sở dữ liệu nhưng tôi nhận được kết quả trống.Trình điều khiển Ruby Mongo - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Cảm ơn
Tôi đang làm gì sai ở đây? Tôi biết _id nằm trong cơ sở dữ liệu nhưng tôi nhận được kết quả trống.Trình điều khiển Ruby Mongo - Find_by_Id
@b = coll.find("_id" => "4db2ebee90036f010b000001")
Cảm ơn
Sử dụng này:
coll.find(:_id => BSON::ObjectId('4db2ebee90036f010b000001')).each do |data|
puts data.inspect
end
@b sẽ chứa một con trỏ, không kết quả. Bạn cũng cần phải sử dụng một id đối tượng thích hợp.
Bạn có thể muốn điều này:
@b = coll.find_one(:_id => BSON::ObjectId('4db2ebee90036f010b000001'))
Với Ruby 1.9.3 và mongoid 3.0.19
@coll = Coll.find(hash["_id"])
hoặc
@coll = Coll.find("511296d2dfa18f07fa000009")
tìm ra kỷ lục. Sẽ chỉ bao giờ là một, _id là khóa chính, nó không bao giờ có thể gấp đôi.
Tôi sẽ sử dụng một cái gì đó như first
trả về một đối tượng vì bạn có vấn đề lớn hơn nếu id chính của bạn được sao chép trong cơ sở dữ liệu. Cú pháp này phụ thuộc vào phiên bản đá quý mongo của bạn, phiên bản này dành cho phiên bản 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
dùng, Ruby phiên bản 2.3.1p112, Mongo (đá quý) 2.4.2 và BSON (đá quý) 4.2.2
Sau đây làm việc cho tôi
client = Mongo::Client.new(['127.0.0.1:3001'], :database=>'dbname')
collection = client[:users]
user = collection.find({_id:'XY3h5R7aJkh5FxFhJ'}).first
hiện nó trở lại bất cứ điều gì nếu bạn thực hiện cùng một bằng tay trong db? –
@Vlad, tôi đang sử dụng MongoHQ và trên thực tế khi tôi tìm kiếm {_id: "4db2ebee90036f010b000001"} Tôi không nhận được kết quả nào. Tuy nhiên, tôi không hiểu tại sao. Hàng ở đó. – donald