6

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}

モペットを使用して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
4

2 に答える 2

15

挿入/保存後、返されたオブジェクトには次のプロパティinserted_idがありBSON::ObjectIdます。

# I'm using insert_one
result = safe['coll'].insert_one({name: 'example'})   
result.methods.sort        # see list of methods/properties
result.inserted_id
result.inserted_id.to_s    # convert to string
于 2016-01-24T14:05:52.270 に答える