2016-11-01 9 views
0

私はいくつかのデータをmongodbに持っています。データのグループを見つけて、それを別のmongoコレクションに戻しています。これは私が試みたアプローチです。しかし、それは私にエラーを与えている。mongoDBから集められたデータを別のコレクションに書き戻します。

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

をv3.2.xは何エラーメッセージですか? '#'は '.aggregate()'メソッドの中で何をしていますか? – styvane

答えて

3

2つの問題:

まずaggregation operator $outは、パイプラインの一部です。 PyMongo aggregate()メソッドは、すべてのパイプラインステージを最初のパラメータとして受け取ります。

ですから、例えば、パイプラインの変数にあなたの$を組み合わせる必要があります。より多くの例については

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

PyMongo Aggregation Examples

セカンドを参照してください、あなたはと同じになるように、出力コレクションを指定しています入力コレクション。 $ out演算子replaces existing collectionに注意してください。 $out examples

を要約するも参照して、以下のコードは、いくつかの修正を超えている:

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 

スニペットPyMongo v3.3のために書かれた上記とMongoDBは

関連する問題