【问题标题】:pymongo nested embedded document field updatepymongo 嵌套嵌入文档字段更新
【发布时间】:2015-09-03 22:06:41
【问题描述】:

我有一个文件:

{
    "name": "restaurant 1",
    "rooms":
        [
            {"name": "room1",
                "desks": [
                    {
                        "name": "desk1",
                        "unique": "abcde",
                        "busy": False
                    },
                    {
                        "name": "desk2",
                        "unique": "abcdf",
                        "busy": True
                    }
                ]},
            {"name": "room2",
                "desks": [
                    {
                        "name": "desk1",
                        "unique": "bbcde",
                        "busy": False
                    },
                    {
                        "name": "desk2",
                        "unique": "bbcdf",
                        "busy": False
                    }
                ]}
        ]
}

我的 pymongo 搜索查询:

db.restaurants.update(
  {'rooms.desks.unique': 'bbcdf')},
  {'$set': {'rooms.$.desks.$$.busy': True}}
)

我无法更新办公桌的“忙碌”字段。 $$ 部分不起作用。我应该用什么替换“$$”?

我怎样才能找到桌子的索引。

提前致谢

【问题讨论】:

    标签: python pymongo


    【解决方案1】:

    根据documentation这是不可能的:

    位置 $ 运算符不能用于遍历多个数组的查询,例如遍历嵌套在其他数组中的数组的查询,因为 $ 占位符的替换是单个值。

    您很可能需要重新设计数据库架构。

    【讨论】:

    • 那么,改变它的唯一机会是 for 循环?无需重新设计数据库
    • 是的,唯一的机会是使用具体索引循环和运行查询。请注意,此更新不是原子的。根据您的应用程序列表可能会同时被另一个进程更改,因此您将更新错误的数组项...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-30
    • 2015-08-27
    • 1970-01-01
    • 2023-01-27
    • 2019-02-26
    • 1970-01-01
    • 2018-04-07
    相关资源
    最近更新 更多