Ich muss die Datensätze in der MongoDB aufstellen. Ich habe eine einfache Logik verwendet, aber es hat nicht funktioniert. Bitte helfen Sie mir, das zu beheben.Mongo DB, Python: Upsert für alle 10000 Datensätze.
from pymongo import MongoClient
import json
import sys
import os
client = MongoClient('localhost', 9000)
db1 = client['Com_Crawl']
collection1 = db1['All']
posts1 = collection1.posts
ll=[]
f=file(sys.argv[1],'r')
for i in f:
j=json.loads(i)
ll.append(j)
#print ll
print len(ll)
count = 0
for l in ll:
count = count+1
if count <= 10000:
print count,l
print posts1.update({'vtid':l},{'$set': {'processed': 0}},upsert = True,multi = True)
print "**** Success ***"
Die Datei enthält 10 Millionen Datensätze. Der obige Code hat eine neue Spalte eingefügt und seinen Wert für 10000 Datensätze auf '0' aktualisiert. Aber wie kann der Rest der Datensätze in einem Batch von 10000 pro Ausführung.
Nicht sicher über den Batch-Teil, aber diese Schleife wird nur während "count <= 10000" hochgeladen und die Zählung wird nie zurückgesetzt. Wenn Sie also 10000 Datensätze erreicht haben, tritt das Upsert nicht mehr auf. – ktbiz
Ja .. aber wie kann ich die Zählung für den nächsten Satz von Werten zurücksetzen. – NiviSRa
Wahrscheinlich möchten Sie nur in Schritten von 10000 inkrementieren und bei jedem Schritt eine Scheibe 'll' einfügen. Verwenden Sie 'range' Anstatt jedes Element zu durchlaufen. – ktbiz