python - 如何使用变量访问 Pymongo 嵌套文档

标签 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
        }
}

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

最佳答案

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

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

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

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

关于python - 如何使用变量访问 Pymongo 嵌套文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38986261/

相关文章:

python - 蒙戈 :Exception OperationFailure: unrecognized field 'mergeByPBRT'

mongodb - Sitecore 8.1 错误 : "No session Id managers were found to manage the session Id for the current request"

angularjs - MeanJS:使用生成器生成子 CRUD 模块?

python - 使用点符号字符串 "a.b.c.d.e"检查嵌套字典,自动创建缺失级别

双重嵌套模板类中的 c++ static int def 因 clang++ 和 g++ 而失败

Python:函数中的双变量

python - 使用 Python 请求库获取 Ajax Json 输出 500 错误

python - 在 python 中嵌套数值积分

android - Kivy ImportError : No module named android. 可运行

javascript - 在 mongodb 中合并不同的文档