MongoDB - 更新多维数字索引数组中的对象
MongoDB - update an object inside a multi dimensional numerical indexed array
我正在学习 MongoDB(第 5 版)[使用 Django (pymongo)] 并面临更新对象的多维数值数组的问题。
我想更新嵌套在多维数组中的对象值。
样本采集数据:
[
{
"_id": {
"$oid": "6269a7a2d9a928481c1ee94c"
},
"data": [
[
[
{
"id": "",
"word": "arep 1"
},
{
"id": "",
"word": "arep 2"
},
{
"id": "",
"word": "arep 3"
}
],
[
{
"id": "",
"word": "arep 4"
},
{
"id": "",
"word": "arep 5"
},
{
"id": "",
"word": "arep 6"
}
],
[],
[]
],
]
}
]
我想将“id”字段值更新为“some new id”,其中相关的“” word”是“arep 2”。到目前为止,我已经创建了一个更新查询,如:
db.collection.update({
"_id": {
"$oid": "6269a7a2d9a928481c1ee94c"
},
"data.$.$.$": {
"word": "arep 2"
}
},
{
"$set": {
"data.$[].$[].$[]": {
"id": "some new id"
}
}
},
{
"upsert": true
})
但未设置该值。我做错了什么?
感谢您阅读到这里。预先感谢您就解决方案集思广益。
查询
- 数组过滤器以匹配
word= "arep 2"
- 对于所有成员(2个嵌套级别)
($[] means for all members)
,将单词(满足arrayFilter)($[w].word)
设置为"hello"
update(
{"_id": {"$eq": 1}},
{"$set": {"data.$[].$[].$[w].word": "hello"}},
{"arrayFilters": [{"w.word": {"$eq": "arep 2"}}]})
我正在学习 MongoDB(第 5 版)[使用 Django (pymongo)] 并面临更新对象的多维数值数组的问题。
我想更新嵌套在多维数组中的对象值。
样本采集数据:
[
{
"_id": {
"$oid": "6269a7a2d9a928481c1ee94c"
},
"data": [
[
[
{
"id": "",
"word": "arep 1"
},
{
"id": "",
"word": "arep 2"
},
{
"id": "",
"word": "arep 3"
}
],
[
{
"id": "",
"word": "arep 4"
},
{
"id": "",
"word": "arep 5"
},
{
"id": "",
"word": "arep 6"
}
],
[],
[]
],
]
}
]
我想将“id”字段值更新为“some new id”,其中相关的“” word”是“arep 2”。到目前为止,我已经创建了一个更新查询,如:
db.collection.update({
"_id": {
"$oid": "6269a7a2d9a928481c1ee94c"
},
"data.$.$.$": {
"word": "arep 2"
}
},
{
"$set": {
"data.$[].$[].$[]": {
"id": "some new id"
}
}
},
{
"upsert": true
})
但未设置该值。我做错了什么?
感谢您阅读到这里。预先感谢您就解决方案集思广益。
查询
- 数组过滤器以匹配
word= "arep 2"
- 对于所有成员(2个嵌套级别)
($[] means for all members)
,将单词(满足arrayFilter)($[w].word)
设置为"hello"
update(
{"_id": {"$eq": 1}},
{"$set": {"data.$[].$[].$[w].word": "hello"}},
{"arrayFilters": [{"w.word": {"$eq": "arep 2"}}]})