def find_one_and_update(self, filter, update, projection=None, sort=None, upsert=False, return_document=pymongo.ReturnDocument.BEFORE, **kwargs):
if self._available_range == group_dict_manager_range.GLOBAL:
pass
elif self._available_range == group_dict_manager_range.GROUP_AND_PUBLIC:
or_list = [{ pair_data.AFFILIATED_GROUP: self._group_id }, { pair_data.AFFILIATED_GROUP: PUBLIC_GROUP_ID }]
if '$or' in filter:
filter['$and'] = [{'$or': or_list}, {'$or': filter['$or']}]
del filter['$or']
else:
filter['$or'] = or_list
elif self._available_range == group_dict_manager_range.GROUP_ONLY:
filter[pair_data.AFFILIATED_GROUP] = self._group_id
else:
raise UnknownRangeError()
sort_tuple = (pair_data.AFFILIATED_GROUP, pymongo.DESCENDING)
if sort is None:
sort = [sort_tuple]
else:
sort.append(sort_tuple)
return super(group_dict_manager, self).find_one_and_update(filter, update, projection, sort, upsert, return_document, **kwargs)
评论列表
文章目录