0

我正在尝试更新存储在 mongodb 集合中的数组的值

any_collection: {
 {
  "_id": "asdw231231"
  "values": [
     {
        "item" : "a"
     },
     {
        "item" : "b"
     }
   ],
  "role": "role_one"
 },
 ...many similar
}

这个想法是我想访问值并使用我在 mongodb 文档中找到的以下代码编辑一个值

conn.any_collection.find_one_and_update(
    {
        "_id": any_id,
        "values.item": "b"
    },
    {
        "$set": {
            "values.$.item": "new_value"  # here the error, ".$."
        }
    }
)

这应该可以,但我不明白错误是什么或pymongo的正确语法是什么。添加“$”时产生错误;

4

1 回答 1

0

它适用于我的 fastAPI。

@app.get("/find/{id}")
async def root(id: int):
    db = get_database()
    q = {'_id': 'asdw231231','values.item': 'b'}
    u = {'$set': {'values.$.item': 'new_value' }}
    c = db['any'].find_one_and_update(q, u)
    return {"message": c}

mongoplayground

于 2021-12-07T00:51:39.963 回答