bulk.find(
{ "_id": new_document["_id"] }
).upsert().update( {
"$setOnInsert": {
"xxxx_ts": new_document["xxxx_ts"],
"xxxx_state": new_document["xxxx_state"],
"xxxx_xxxx_hash": new_document["xxxx_xxxx_hash"],
"version": 0
},
"$set": {
"xxxx_ts": new_document["xxxx_ts"],
"xxxx_state": new_document["xxxx_state"],
"xxxx_xxxx_hash": new_document["xxxx_xxxx_hash"],
"$inc": { "version": 1 } # Doesn't work WHY???
}
}
)result = bulk.execute()pymongo.errors.BulkWriteError: batch op errors occurred
bulk.find({ "_id": new_document["_id"] }).upsert().update( {
"$setOnInsert": {
"xxxx_ts": new_document["xxxx_ts"],
"xxxx_state": new_document["xxxx_state"],
"xxxx_xxxx_hash": new_document["xxxx_xxxx_hash"],
"version": 0
},
"$inc": { "version": 1 },
"$set": {
"xxxx_ts": new_document["xxxx_ts"],
"xxxx_state": new_document["xxxx_state"],
"xxxx_xxxx_hash": new_document["xxxx_xxxx_hash"]
}
}
)
Traceback (most recent call last):
File "ozfs_expected_state.py", line 85, in <module>
raise(excep)
File "ozfs_expected_state.py", line 73, in <module>
result = bulk.execute()
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 675, in execute
return self.__bulk.execute(write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 493, in execute
return self.execute_command(sock_info, generator, write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 331, in execute_command
raise BulkWriteError(full_result)
pymongo.errors.BulkWriteError: batch op errors occurred
demo$ python3 ozfs_expected_state.py
Traceback (most recent call last):
File "ozfs_expected_state.py", line 85, in <module>
raise(excep)
File "ozfs_expected_state.py", line 73, in <module>
result = bulk.execute()
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 675, in execute
return self.__bulk.execute(write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 493, in execute
return self.execute_command(sock_info, generator, write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 331, in execute_command
raise BulkWriteError(full_result)
pymongo.errors.BulkWriteError: batch op errors occurred
demo$ python3 ozfs_expected_state.py
demo$ python3 ozfs_expected_state.py
Traceback (most recent call last):
File "ozfs_expected_state.py", line 85, in <module>
raise(excep)
File "ozfs_expected_state.py", line 73, in <module>
result = bulk.execute()
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 675, in execute
return self.__bulk.execute(write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 493, in execute
return self.execute_command(sock_info, generator, write_concern)
File "/usr/local/lib/python3.5/dist-packages/pymongo/bulk.py", line 331, in execute_command
raise BulkWriteError(full_result)
rhys:PRIMARY> db.ozfs_expected_states.find({}, { "_id": 0, "version": 1 }).pretty()
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }
{ "version" : 6 }Any ideas on this one?
Hi Rhys,
It’s been a while since you posted this question, have you found the answer yet ?
This is because $setOnInsert is combined with non-insert modifiers.
If you catch the BulkWriteError exception and print out the details you should be able to see an error message as below:
'writeErrors': [{'code': 40,
'errmsg': "Updating the path 'xxxx_ts' would create a "
"conflict at 'xxxx_ts'",
...
There is currently an open ticket for this SERVER-10711, feel free to upvote/watch for notifications.
Regards,
Wan.