我对 mongodb 很陌生,正在尝试找出一些更精确的查询。这是在 node.js 服务器上。
我想通过 1 个或多个索引更新现有文档中的数组。mongodb 文档对初学者的语法确实没有帮助,希望您能提供帮助。
let updateArray = [
{index:2,text:'boo',insert:false},
{index:4,text:'bar',insert:true},
{index:7,text:'bop',insert:false}
]
db.collection(user).findAndModify(
{_id:ObjectId(_id)},
{ $set: { "array.$[index].text": updateArray[index] } },
{ arrayFilters: updateArray, new: true }
)
显然这没有奏效。正在用它拍摄月球,但这是我想通过一个查询来实现的那种事情的一个例子。希望对于比我更有经验的人来说足够清楚,至少可以为我指明正确的方向。谢谢!
编辑:在下面的评论之后,这是我之前的:
{
array : [
"boo boo",
"boppidy"
]
}
之后:
{
array : [
"boo boo",
"bar bar"
"boppidy bop"
]
}
请注意,我想要push
一个索引以及set
另一个索引的新值。找到有用提示后的当前代码给出了这一点,但我得到了一个Updating the path 'array' would create a conflict at 'array'
,这是有道理的,但不知道解决方法是什么。
db.collection(user).update(
{_id:ObjectId(_id)}, {
$set : {
"array.2" : "boppidy bop"
},
$push:{
"array":{
$each: ["bar bar"],
$position:1
}
}
}
)