如何确保在不使用索引的情况下插入时在mongodb中没有重复记录?

时间:2019-02-06 07:07:35

标签: mongodb

我每天都会从提供两次或三次相同记录的来源获取数据。 我想确保数据库中的唯一记录而不使用索引。

1 个答案:

答案 0 :(得分:0)

如果记录采用规范格式并且不是太大,则可以对每个记录进行哈希处理,然后在插入过程中将散列存储为文档的_id键(此索引会自动建立索引,因此您无法关闭索引)。

在Python中(您需要安装pymongo驱动程序<platform name="android"> <preference name="android-minSdkVersion" value="25" /> ... )。

pip install pymongo

因此,要检测重复记录,只需捕获>>> import json >>> import pymongo >>> client = pymongo.MongoClient() >>> db=client['test'] >>> collection=db['test'] >>> a={"a":"b"} >>> s = json.dumps(a) >>> hash(s) 7926683998783294113 >>> collection.insert_one({"_id" : hash(s), "data" : a}) <pymongo.results.InsertOneResult object at 0x104ff7bc8> >>> collection.insert_one({"_id" : hash(s), "data" : a}) ... raise DuplicateKeyError(error.get("errmsg"), 11000, error) pymongo.errors.DuplicateKeyError: E11000 duplicate key error collection: test.test index: _id_ dup key: { : 7926683998783294113 } >>> 。这种方法 假设DuplicateKeyError的输出对于相同的记录是相同的。