2017-12-27 9 views
1

Ich versuche, ein Upsert für mehrere Dokumente zu tun. Derzeit versuche ich mit 'multi = true'. Es funktioniert nicht für mich.TypeError: update() hat mehrere Werte für Schlüsselwortargument 'upsert'

meinen Code sind

dataArray = [] 
for i in posts_data['posts']['data']: 

    dataPost = {} 
    dataPost['post_id'] = i['id'] 
    dataPost['post_message'] = json.dumps(i['message']) 

    comments_in_posts = graph.get_object(dataPost['post_id'], fields = 'comments') 

    dataPost['comments_data'] = json.loads(json.dumps(comments_in_posts)) 
    reactions_in_post = graph.get_object(dataPost['post_id'], fields = 'reactions') 


    dataPost['reactions_data'] = json.loads(json.dumps(reactions_in_post)) 
    getPostReactionCount(dataPost['reactions_data']) 

    dataArray.append(dataPost) 



#insert process 
print "before insert" 
print "-----------------------------------------------------------" 
collection.update({'post_id':dataPost['post_id']}, {'post_message':dataPost['post_message']}, {'comments_data':dataPost['comments_data']},{'reactions_data':dataPost['reactions_data']}, multi=True, upsert=True) 
+0

Was ist die Art von 'Sammlung'? – Zack

+0

Hallo Zack! tatsächlich gibt es einen Code an der Front, aber ich habe nicht den ganzen Code hier eingefügt. Die Sammlung ist eigentlich die Sammlung in meinem Mongodb. Also hier ist mein Code. dataarray = [] client = MongoClient ('localhost: 27017') db = client.sDB collection = db.sInsert – xxxSL

+1

ein paar Dinge gibt es hier zu klären. Ist 'collection.update' in der Schleife verschachtelt? Es ist mir nicht klar, welches Dokument du versuchst, _upsert_. Könntest Du das erläutern? –

Antwort

0

es scheint, dass Sie falsch Variable adressieren Sie alle Ergebnisse in

dataArray.append(*dataPost*) 

sind bevöl Aber nächstes Sie Update mit letzten Data

verwenden
collection.update({'post_id':dataPost['post_id']}, {'post_message':dataPost['post_message']}, {'comments_data':dataPost['comments_data']},{'reactions_data':dataPost['reactions_data']}, multi=True, upsert=True) 

So mein Punkt nur Update-Anweisung zu für Schleife setzen, weil du genau das Array für Update-Befehl geben kann nicht - es wird nicht die Struktur verstehen, auch nur FYI updateMany Befehl für Sammlungen gibt es nur noch deutlicher zu sein, zu lesen

Verwandte Themen