2016-04-09 6 views
5

Ich möchte einige Werte in Array mit Python schieben.
Vielleicht nächstes Mal, wenn ich das Array aktualisieren, wird es einige Werte einfügen, so wird es einige doppelte Werte erhalten.
Ich möchte wissen, gibt es sowieso doppelte Werte zu vermeiden.
Soll ich db.collection.find() verwenden, um festzustellen, ob ich einfügen soll oder nicht?

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

Antwort

9

Der beste Weg, dies zu tun $addToSet Operator, das gewährleistet, dass es keine doppelten Einträge zu dem Satz hinzugefügt und der $each Modifikator füge dem "folgenden" Array mehrere Werte hinzu.

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

auch sollten Sie die update_one Methode verwenden, da update veraltet.

Verwandte Themen