2016-08-17 6 views
1

Ich verstehe, dass, um ein verschachteltes Dokument zu finden, dass ich die Punktnotation verwenden soll, aber ich brauche, was folgt der Punkt in variabler Form sein. Ich tue das folgende:Zugriff auf Pymongo verschachteltes Dokument mit Variable

collection.update_one(
        {'_id': md5_hash}, 
        {'$addToSet' : { 
        'src_id': src_id, 
        'offset.src_id' : offset}} 
           ) 

und

{ 
     "_id" : "de03fe65a6765caa8c91343acc62cffc", 
     "total_count" : 1, 
     "src_id" : [ 
       "a3c1b98d5606be7c5f0c5d14ffb0b741" 
     ], 
     "offset" : { 
       "a3c1b98d5606be7c5f0c5d14ffb0b741" : [ 
         512 
       ], 
       "src_id" : [ 
         512, 
         1024, 
         1536, 
         2048, 
         2560, 
         3072, 
         3584, 
         4096, 
         4608 
       ] 
     }, 
     "per_source_count" : { 
       "a3c1b98d5606be7c5f0c5d14ffb0b741" : 1 
     } 
} 

ich immer nicht wollen „src_id“ im Offset-Dokument, das ich auf die a3c1b98d5606be7c5f0c5d14ffb0b741 Schlüssel hinzufügen möchten. Ich benutze python3.5 und pymongo Version 3.2.2. Vielen Dank!

Antwort

1

können Sie haben nur eine verschachtelte Wörterbuch:

collection.update_one({'_id': md5_hash}, 
         {'$addToSet': {'offset': {src_id: offset}}}) 

Oder Sie dynamisch das Feld über String-Formatierung oder Verkettung machen können:

collection.update_one({'_id': md5_hash}, 
         {'$addToSet': {'offset.%s' % src_id: offset}}) 
Verwandte Themen