Когда я использую Монго-рубиновый-драйвер и вставить новый документ, он возвращает сгенерированный «_id»:Мопед: получить идентификатор после вставки
db = MongoClient.new('127.0.0.1', '27017').db('ruby-mongo-examples')
id = db['test'].insert({name: 'example'})
# BSON::ObjectId('54f88b01ab8bae12b2000001')
Я пытаюсь получить «_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}
Как получить идентификатор, используя мопед?
Update:
Я также пытаюсь использовать безопасный режим, но он не работает:
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
Вы можете получить его в ответе, если вы сделаете [безопасную вставку] (http://mongoid.org/en/moped/) или сгенерируете его перед вставкой, например 'document = {_id: Moped :: BSON :: ObjectId .new, name: "example"} id = document [: _ id] ' – chridam
Я нашел эту проблему: https://github.com/mongoid/moped/issues/129. Кажется, что единственным способом является общий идентификатор с BSON :: ObjectId.new и его использование. Спасибо @chridam. – drinor
Я думаю, что ответ @ hamster_ham более уместен, чем мой, ваш призыв принять его. – chridam