使用MongoDB上的$ push更新数组时避免重复值

时间:2016-04-09 15:10:12

标签: python mongodb mongodb-query pymongo

我想用Python将一些值推送到数组中 也许下次当我更新数组时,它会插入一些存在的值,因此会得到一些重复的值 我想要知道是否有避免重复的值 我应该使用db.collection.find()来确定是否应该插入?

db.graph.insert_one({"user_id": a.url}, )
for j in a.followers:
    db.graph.update({"user_id": a.url}, {"$push": {"following": j.url}})

2 个答案:

答案 0 :(得分:12)

执行此操作的最佳方法是使用$addToSet运算符,该运算符可确保没有重复项添加到集合中,$each修饰符可将多个值添加到"以下"阵列。

urls = [j.url for j in a.followers]
db.graph.update_one({"user_id": a.url}, {"$addToSet": {"following": {"$each": urls}}})

您也应该使用update_one方法,因为不推荐使用update

答案 1 :(得分:3)

我认为,您可以使用$ addToSet运算符:https://docs.mongodb.org/manual/reference/operator/update/addToSet/