我有一个我想添加的嵌套数组,但我遇到了困难。我的目标是在不存在的情况下附加到此数组,如果不存在,则会更改其中的信息。
例如,我想在' arr4'内编辑字典的内容。使用' foo'的标识(' id4')来自' ...'到了' !!!'。
这是使用PyMongo设置的:
diction = {
"arr1": [
{
"id1": "abc",
"someInfo1": "...",
"someInfo2": "...",
"someInfo3": "...",
"someInfo4": "...",
"arr2": [
{
"id2": "ijk",
"arr3": [
{
"id3": "xyz",
"someInfo1": "...",
"someInfo2": "...",
"arr4": [
{
"id4": "foo",
"someInfo": "..."
},
{
"id4": "bar",
"someInfo": "..."
}
]
}
]
}
]
}
]
}
import pymongo
from pymongo import MongoClient
client = MongoClient()
db = client['pymongo_test2']
db.posts.insert_one(diction)
为了访问这些数组,我想我会使用数组过滤器,所以我试过
id1 = 'abc'
id2 = 'ijk'
id3 = 'xyz'
id4 = 'foo'
db.posts.update_one({}, {'$set': {'arr1.$[element1].arr2.$[element2].arr3.$[elemenet3].arr4': {'id4': 'foo', 'someInfo': '!!!'}, 'arrayFilters': {'element1.id1': id1, 'element2.id2': id2, 'elemenet3.id3': id3}}}, True)
但是我收到了错误:
pymongo.errors.WriteError:找不到标识符' element1'的数组过滤器在路径' arr1。$ [element1] .arr2。$ [element2] .arr3。$ [elemenet3]'
非常感谢任何帮助!