pymongo嵌套嵌入式文档字段更新

时间:2015-09-03 13:51:45

标签: python pymongo

我有一份文件:

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

我无法更新"忙碌"桌子的领域。 $$部分没有工作。我应该更换什么" $$"用?

如何找到桌面的索引。

提前致谢

1 个答案:

答案 0 :(得分:1)

根据documentation,这是不可能的:

  

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

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