当我使用mongo-ruby-driver并插入新文档时,它将返回生成的“ _id”:
db = MongoClient.new('127.0.0.1', '27017').db('ruby-mongo-examples')
id = db['test'].insert({name: 'example'})
# BSON::ObjectId('54f88b01ab8bae12b2000001')
我尝试使用Moped插入后获取文档的“ _id”:
db = Moped::Session.new(['127.0.0.1:27017'])
db.use('ruby-mongo-examples')
id = db['coll'].insert({name: 'example'})
# {"connectionId"=>15, "n"=>0, "syncMillis"=>0, "writtenTo"=>nil, "err"=>nil, "ok"=>1.0}
如何使用Moped获取ID?
更新:
我也尝试使用安全模式,但不起作用:
db = Moped::Session.new(['127.0.0.1:27017'])
db.use('ruby-mongo-examples')
db.with(safe: true) do |safe|
id = safe['coll'].insert({name: 'example'})
# {"connectionId"=>5, "n"=>0, "syncMillis"=>0, "writtenTo"=>nil, "err"=>nil, "ok"=>1.0}
end
从这个问题:
很好,但是不幸的是,Mongo在插入时不会给我们任何东西(因为它是开枪而忘记了),并且在安全模式下,如果它在服务器上生成了ID,它仍然不会给我们ID。因此,除非它是MongoDB的核心功能,否则我们实际上没有任何可能的方法。
最好的选择是在插入文档之前生成ID:
document = { _id: Moped::BSON::ObjectId.new, name: "example" }
id = document[:_id]
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句