我每天都会从提供两次或三次相同记录的来源获取数据。 我想确保数据库中的唯一记录而不使用索引。
答案 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
的输出对于相同的记录是相同的。