[JAVA-1263] Handle Bulk API edge case for pre-2.6 servers when upserted _id not returned Created: 05/Jun/14  Updated: 23/Jul/14  Resolved: 25/Jun/14

Status: Closed
Project: Java Driver
Component/s: Write Operations
Affects Version/s: None
Fix Version/s: 2.12.3, 3.0.0

Type: Improvement Priority: Major - P3
Reporter: Barrie Segal Assignee: Ross Lawley
Resolution: Done Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Issue Links:
Depends
is depended on by DRIVERS-151 Handle Bulk API edge case for pre-2.6... Closed

 Description   

Server versions before 2.6 only return the 'upserted' field in an update result when the upserted _id is an ObjectId. If the user provides any other value for _id in the query spec, or update document (for a replace operation) the upserted field is not returned. This causes invalid counts for nUpserted in the Bulk API result set.

The purpose of this ticket is to work around the issue in the Java driver.

In all of these examples the server upserts a new document but does not return the _id of the document inserted:

>>> db.test.count()
0
>>> db.test.update({'_id': 0}, {'$set': {'a': 0}}, upsert=True)
{u'updatedExisting': False, u'connectionId': 1, u'ok': 1.0, u'err': None, u'n': 1}
>>> db.test.find_one({'_id': 0})
{u'a': 0, u'_id': 0}
>>> db.test.update({'a': 1}, {'_id': 1}, upsert=True)
{u'updatedExisting': False, u'connectionId': 1, u'ok': 1.0, u'err': None, u'n': 1}
>>> db.test.find_one({'_id': 1})
{u'_id': 1}
>>> db.test.update({'_id': 3}, {'_id': 2}, upsert=True)
{u'updatedExisting': False, u'connectionId': 1, u'ok': 1.0, u'err': None, u'n': 1}
>>> db.test.find_one({'_id': 2})
{u'_id': 2}
>>> c.server_info()['version']
u'2.4.10'



 Comments   
Comment by Githook User [ 25/Jun/14 ]

Author:

{u'username': u'rozza', u'name': u'Ross Lawley', u'email': u'ross.lawley@gmail.com'}

Message: Fix reporting _id for Bulk API edge case for pre-2.6 servers

When upserted _id is not returned on custom _id's

JAVA-1263
Branch: 2.12.x
https://github.com/mongodb/mongo-java-driver/commit/5565c46eb06b7cba51c77f5c763e04a6576c0b02

Comment by Githook User [ 18/Jun/14 ]

Author:

{u'username': u'rozza', u'name': u'Ross Lawley', u'email': u'ross.lawley@gmail.com'}

Message: Fix reporting _id for Bulk API edge case for pre-2.6 servers

When upserted _id is not returned on custom _id's

JAVA-1263
Branch: master
https://github.com/mongodb/mongo-java-driver/commit/5565c46eb06b7cba51c77f5c763e04a6576c0b02

Generated at Thu Feb 08 08:54:11 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.