【问题标题】:insert not duplicate data with Pymongo in mongodb在 mongodb 中使用 Pymongo 插入不重复的数据
【发布时间】:2015-06-25 07:03:34
【问题描述】:

现在,我尝试用 pymongo 在 mongoldb 中插入数据。

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

但是,在尝试 find_one() 之前,该方法会产生重复的 ObjectID。

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)

更好的方法请求..

可能使用 forEach.but 语法错误

【问题讨论】:

  • 如何关闭问题?堆栈溢出问题完成

标签: python mongodb pymongo


【解决方案1】:

如果 hme 键包含 ObjectIds 的数组,那么您可以尝试使用 $addToSet 运算符而不是 $push,因为它添加了一个值到一个数组,除非该值已经存在,在这种情况下 $addToSet 对该数组不做任何事情,因此它只确保没有重复的项目添加到集合中并且不会影响现有的重复元素:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2016-04-23
    • 2021-02-01
    • 1970-01-01
    相关资源
    最近更新 更多