2017-12-27 27 views
1

여러 문서에 대해 업서 트를 수행하려고합니다. 현재, 나는 'multi = true'를 시도한다. 그것은 나를 위해 그것을 해결하지 않습니다.TypeError : update()에 키워드 인수 'upsert'에 대한 값이 여러 개 있습니다.

내 코드입니다

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

'collection'의 종류는 무엇입니까? – Zack

+0

안녕하세요 잭! 실제로 앞 부분에 몇 가지 코드가 있지만 여기에 코드를 모두 붙여 넣지 않았습니다. 컬렉션은 실제로 내 mongodb의 컬렉션입니다. 여기 내 코드가 있습니다. dataArray = [] 클라이언트 = MongoClient ('로컬 호스트 : 27,017') dB = client.sDB 모음 =이있다 db.sInsert – xxxSL

+1

몇 가지가 여기에 명확히합니다. 'collection.update'는 루프 안에 중첩되어 있습니까? _upsert_하려고하는 문서가 무엇인지 분명하지 않습니다. 당신은 명확히 할 수 있습니까? –

답변

0

당신이

dataArray.append(*dataPost*) 

에 당신은 모든 결과를 채우는 것 잘못된 변수를 해결하고 그러나 다음 마지막 dataPost

으로 업데이 트를 사용하는 것 같습니다
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 내 요점은 에 대한 업데이트 문장을 넣는 것입니다. 업데이트 명령에 대한 배열을 줄 수는 없으므로 루프를 구성 할 수 없습니다. 구조를 이해하지 못할 수도 있습니다. updateMany 모음을 더 쉽게 읽을 수 있습니다.