2016-11-01 3 views
0

Ich habe einige Daten in mongodb von dem ich eine Gruppe von Daten finde und es zurück zu der verschiedenen mongo Ansammlung speichere. Dies ist der Ansatz, den ich versucht habe. Aber es gibt mir einen Fehler.die aggregierten Daten von mongoDB in andere Sammlung zurück schreiben

from pymongo import MongoClient 
Client= MongoClient() 
db= Client["myntra"] 
collection= db["women.trouser"] 
pipeline=[] 
pipeline = [ 
    {'$group': 
     {'_id': 
       {'objectId':"$_id", 
       'styleOptions_skuAvailabilityDetailMap_availableCount':"$pdpData.styleOptions.skuAvailabilityDetailMap.19.availableCount", 
       'styleOptions_skuId':"$pdpData.styleOptions.skuId",} 
      } 
    } 
] 



cursor = db.women.duplicate.trouser.aggregate(pipeline,{'$out':'women.duplicate.trouser'})#{ 'allowDiskUse': True})) 
print cursor 
+0

Was ist die Fehlermeldung? Was macht '#' innerhalb der '.aggregate()' Methode? – styvane

Antwort

3

Zwei Probleme:

Zum einen ist die aggregation operator $out Teil der Pipeline. PyMongo aggregate() Methode akzeptiert alle Pipeline-Stufen als erste Param.

So sollten Sie Ihre $ in die Pipeline Variable kombinieren, zum Beispiel:

pipeline = [ 
    {'$group': { ... } }, 
    {'$out': { ... } } 
] 

Weitere Beispiele PyMongo Aggregation Examples

Zweitens sehen Sie die Ausgabe Sammlung angeben werden die gleichen wie die Eingabesammlung. Beachten Sie, dass $ out-Operator replaces existing collection. Siehe auch $out examples

Um es zusammenzufassen, ist unten Code oben mit einigen Korrekturen:

from pymongo import MongoClient 
client= MongoClient() 
collection= db["myntra"]["women.trouser"] 
pipeline = [ 
    {'$group': 
     {'_id': 
       {'objectId':"$_id",    
       'styleOptions_skuAvailabilityDetailMap_availableCount':"$pdpData.styleOptions.skuAvailabilityDetailMap.19.availableCount", 
       'styleOptions_skuId':"$pdpData.styleOptions.skuId",} 
      } 
    }, 
    {'$out': 'women.duplicate.trouser' } 
] 

cursor = db.collection.aggregate(pipeline, { 'allowDiskUse': True}) 
print cursor 

Das Snippet oben für PyMongo v3.3 geschrieben wurde und MongoDB V3.2.x

Verwandte Themen