2016-04-09 31 views
5

Voglio spingere alcuni valori in array usando Python.
Forse la prossima volta che aggiorno la matrice, inserirà alcuni valori, quindi avrà alcuni valori duplicati.
Voglio sapere c'è comunque per evitare valori duplicati.
Devo utilizzare db.collection.find() per determinare se inserire o meno?

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

risposta

9

Il modo migliore per farlo è usare $addToSet operatore che assicura che non ci sono elementi duplicati aggiunti al set e la $each modificatore aggiungere più valori alla matrice "seguente".

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

Inoltre si dovrebbe utilizzare il metodo update_one perché update è deprecato.