[V3 Mongo] Fix all behavior (#2580)

This commit is contained in:
Will 2019-04-13 15:24:50 -04:00 committed by GitHub
parent c82ac5ae68
commit 8b3c3e89e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -93,7 +93,7 @@ class Mongo(BaseDriver):
elif len(pkeys) > 1: elif len(pkeys) > 1:
# All other data # All other data
partial = ret partial = ret
for key in pkeys[1:-1]: for key in pkeys[:-1]:
if key in identifier_data.primary_key: if key in identifier_data.primary_key:
continue continue
if key not in partial: if key not in partial:
@ -155,13 +155,15 @@ class Mongo(BaseDriver):
def generate_primary_key_filter(self, identifier_data: IdentifierData): def generate_primary_key_filter(self, identifier_data: IdentifierData):
uuid = self._escape_key(identifier_data.uuid) uuid = self._escape_key(identifier_data.uuid)
primary_key = list(map(self._escape_key, self.get_primary_key(identifier_data))) primary_key = list(map(self._escape_key, self.get_primary_key(identifier_data)))
ret = {"_id": {"RED_uuid": uuid}} ret = {"_id.RED_uuid": uuid}
if len(identifier_data.identifiers) > 0: if len(identifier_data.identifiers) > 0:
ret["_id"]["RED_primary_key"] = primary_key ret["_id.RED_primary_key"] = primary_key
else: elif len(identifier_data.primary_key) > 0:
for i, key in enumerate(primary_key): for i, key in enumerate(primary_key):
keyname = f"RED_primary_key.{i}" keyname = f"_id.RED_primary_key.{i}"
ret["_id"][keyname] = key ret[keyname] = key
else:
ret["_id.RED_primary_key"] = {"$exists": True}
return ret return ret
async def clear(self, identifier_data: IdentifierData): async def clear(self, identifier_data: IdentifierData):