如何使用变量

时间:2016-08-17 00:05:58

标签: python mongodb nested 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
        }
}

我不想要" src_id"在偏移文档中,我想添加到a3c1b98d5606be7c5f0c5d14ffb0b741键。我使用python3.5和pymongo版本3.2.2。谢谢!

1 个答案:

答案 0 :(得分:1)

你可以拥有一个嵌套字典:

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

或者,您可以通过字符串格式化或连接动态创建字段:

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