Json 具有多个条件的Mongodb插入
我在一个集合中有多个文档,每个文档都有以下数据结构:Json 具有多个条件的Mongodb插入,json,mongodb,updates,mongodb-query,Json,Mongodb,Updates,Mongodb Query,我在一个集合中有多个文档,每个文档都有以下数据结构: { _id: "some object id", data1: [ { data2_id : 13233, data2: [ { sub_data1: "text1", sub_data2: "text2", su
{
_id: "some object id",
data1: [
{
data2_id : 13233,
data2: [
{
sub_data1: "text1",
sub_data2: "text2",
sub_data3: "text3",
},
{
sub_data1: "text4",
sub_data2: "text5",
sub_data3: "text6",
}
]
},
{
data2_id : 53233,
data2: [
{
sub_data1: "text4",
sub_data2: "text5",
sub_data3: "text6",
}
...
]
},
{
data2_id : 56233,
data2: [
{
sub_data1: "text7",
sub_data2: "text8",
sub_data3: "text9",
}
...
]
},
{
data2_id : 53236,
data2: [
{
sub_data1: "text10",
sub_data2: "text22",
sub_data3: "text33",
}
...
]
}
]
}
我想更新一组符合某些条件的ID,只更新文档中的子对象
我试过这个:
db.collection.update({
"$and": [
{
"_id": {
"$in": [
{
"$id": "54369aca9bc25af3ca8b4568"
},
{
"$id": "54369aca9bc25af3ca8b4562"
}
]
}
},
{
"data1.data2": {
"$elemMatch": {
"sub_data1": "text4",
"sub_data2": "text5"
}
}
}
]
},
{
"data1.data2.$.sub_data3" : "text updated"
}
)
但我得到了以下错误:
将数据更新到MongoDB失败:dev.*.com:27017:无法使用部件(data1.data2.0.sub_data3的data2)遍历元素
有什么想法吗?在尝试更新嵌套在另一个数组中的数组元素时,存在一个未解决的问题
此外,您还可以在此处进行一些改进:
否则,您可能会丢失文档中的其余数据。update position操作符
$
无法支持嵌套数组。这意味着data1.$.data2
是可以接受的,但不是data1.data2.$
。我发现有多个data2
作为data1
的元素满足查询条件o此位置运算符$
不适合在此处使用,因为它只定位在第一位,而忽略其他位置。我认为您必须在更新之前从查询中获取整个数据1
。最终我修改了数据,然后将其保存。这是在当前mdb版本中执行此操作的唯一方法。