我正在使用pymongo“insert_one”,我想防止插入两个具有相同“name”属性的文档。
1.一般如何防止重复?
1.我如何配置它的一个特定的属性,如名称?
谢谢!
我的代码:
client = MongoClient('mongodb://localhost:8888/db')
db = client[<db>]
heights=db.heights
post_id= heights.insert_one({"name":"Tom","height":2}).inserted_id
try:
post_id2 = heights.insert_one({"name":"Tom","height":3}).inserted_id
except pymongo.errors.DuplicateKeyError, e:
print e.error_document
print post_id
print post_id2
输出:
56aa7ad84f9dcee972e15fb7
56aa7ad84f9dcee972e15fb8
4条答案
按热度按时间cig3rfwq1#
一般来说,在How to stop insertion of Duplicate documents in a mongodb collection上有一个防止在mongoDB中添加重复文档的答案。
这个想法是使用
update
和upsert=True
,而不是insert_one
。所以当插入pymongo的代码时ukxgm1gy2#
您需要创建一个索引,以确保名称在该集合中是唯一的
例如
请参阅官方文档以了解更多详细信息和澄清示例
k5ifujac3#
这是你的文件
然后,对文档使用
$set
进行更新vi4fp9gy4#
我自己也有类似的问题,但找不到适合我的解决方案。
最后我想到了
1.在收集的数据中寻找我想放进去的确切数据
1.计算结果的数量
1.如果结果数为1,则数据已经存在,如果结果数为0,则数据不存在。
这是我一直在寻找的工作,也许iz帮助别人: