2016-08-17 73 views
1

我明白,为了找到一个嵌套的文档,我要使用点符号,但我需要以点后面的变量形式。我做了以下内容:如何访问Pymongo嵌套的文档变量

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

并获得

{ 
     "_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 
     } 
} 

我不想偏移文件我要添加到a3c1b98d5606be7c5f0c5d14ffb0b741键入“src_id”。我正在使用python3.5和pymongo版本3.2.2。谢谢!

回答

1

只是您可以嵌套的字典:

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

或者,您也可以通过字符串格式化或连接动态地进行字段:

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