results.py 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. try:
  2. from pymongo.results import BulkWriteResult
  3. from pymongo.results import DeleteResult
  4. from pymongo.results import InsertManyResult
  5. from pymongo.results import InsertOneResult
  6. from pymongo.results import UpdateResult
  7. except ImportError:
  8. class _WriteResult(object):
  9. def __init__(self, acknowledged=True):
  10. self.__acknowledged = acknowledged
  11. @property
  12. def acknowledged(self):
  13. return self.__acknowledged
  14. class InsertOneResult(_WriteResult):
  15. __slots__ = ('__inserted_id', '__acknowledged')
  16. def __init__(self, inserted_id, acknowledged=True):
  17. self.__inserted_id = inserted_id
  18. super(InsertOneResult, self).__init__(acknowledged)
  19. @property
  20. def inserted_id(self):
  21. return self.__inserted_id
  22. class InsertManyResult(_WriteResult):
  23. __slots__ = ('__inserted_ids', '__acknowledged')
  24. def __init__(self, inserted_ids, acknowledged=True):
  25. self.__inserted_ids = inserted_ids
  26. super(InsertManyResult, self).__init__(acknowledged)
  27. @property
  28. def inserted_ids(self):
  29. return self.__inserted_ids
  30. class UpdateResult(_WriteResult):
  31. __slots__ = ('__raw_result', '__acknowledged')
  32. def __init__(self, raw_result, acknowledged=True):
  33. self.__raw_result = raw_result
  34. super(UpdateResult, self).__init__(acknowledged)
  35. @property
  36. def raw_result(self):
  37. return self.__raw_result
  38. @property
  39. def matched_count(self):
  40. if self.upserted_id is not None:
  41. return 0
  42. return self.__raw_result.get('n', 0)
  43. @property
  44. def modified_count(self):
  45. return self.__raw_result.get('nModified')
  46. @property
  47. def upserted_id(self):
  48. return self.__raw_result.get('upserted')
  49. class DeleteResult(_WriteResult):
  50. __slots__ = ('__raw_result', '__acknowledged')
  51. def __init__(self, raw_result, acknowledged=True):
  52. self.__raw_result = raw_result
  53. super(DeleteResult, self).__init__(acknowledged)
  54. @property
  55. def raw_result(self):
  56. return self.__raw_result
  57. @property
  58. def deleted_count(self):
  59. return self.__raw_result.get('n', 0)
  60. class BulkWriteResult(_WriteResult):
  61. __slots__ = ("__bulk_api_result", "__acknowledged")
  62. def __init__(self, bulk_api_result, acknowledged):
  63. self.__bulk_api_result = bulk_api_result
  64. super(BulkWriteResult, self).__init__(acknowledged)
  65. @property
  66. def bulk_api_result(self):
  67. return self.__bulk_api_result
  68. @property
  69. def inserted_count(self):
  70. return self.__bulk_api_result.get("nInserted")
  71. @property
  72. def matched_count(self):
  73. return self.__bulk_api_result.get("nMatched")
  74. @property
  75. def modified_count(self):
  76. return self.__bulk_api_result.get("nModified")
  77. @property
  78. def deleted_count(self):
  79. return self.__bulk_api_result.get("nRemoved")
  80. @property
  81. def upserted_count(self):
  82. return self.__bulk_api_result.get("nUpserted")
  83. @property
  84. def upserted_ids(self):
  85. if self.__bulk_api_result:
  86. return dict((upsert["index"], upsert["_id"])
  87. for upsert in self.bulk_api_result["upserted"])