MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Die gleichzeitige Aktualisierung von MongoDB auf dasselbe Dokument verhält sich nicht atomar

Verwenden Sie bedingte Aktualisierungen und überprüfen Sie die Anzahl der aktualisierten Dokumente, um festzustellen, ob die Aktualisierung stattgefunden hat.

require 'mongo'

client = Mongo::Client.new(['localhost:14400'])

coll = client['coll']

coll.delete_many
coll.insert_one(foo: 1)

rv = coll.update_one({foo: 1}, '$set' => {foo: 2})
if rv.modified_count == 1
  puts 'Updated'
end

rv = coll.update_one({foo: 1}, '$set' => {foo: 2})
if rv.modified_count == 1
  puts 'Updated'
end

https://github.com/p -mongo/tests/blob/master/query-conditional-update/test.rb