在mongodb中插入不与Pymongo重复的数据

时间:2015-06-25 07:03:34

标签: python mongodb pymongo

现在,我尝试在mongoldb中插入带有pymongo的数据。

get_db().users.update({'_id':ObjectId(session['user_id'])},{'$push':{'hme':ObjectId(id)}},upsert=True)

但是,该方法产生重复的ObjectID.before尝试find_one()。

if not ObjectId(id) in get_db().users.find_one({'_id':ObjectId(session['user_id'])})['hme']:
    get_db().users.update({'_id':ObjectId(session['user_id'])},{'$push':{'hme':ObjectId(id)}},upsert=True)

更好的方法请求..

可能用于每个。但语法错误

1 个答案:

答案 0 :(得分:0)

如果hme键包含ObjectId个数组,那么您可以尝试 $addToSet 运算符而不是 $push < / strong>因为它向数组添加了一个值,除非该值已经存在,在这种情况下, $addToSet 对该数组不执行任何操作,因此它只确保没有重复的项添加到集合并不会影响现有的重复元素:

get_db().users.update(
   {'_id':ObjectId(session['user_id'])},
   {
       '$addToSet':{
           'hme':ObjectId(id)
       }
   },
   upsert=True
)