0

我对 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 
                    }
                }
        }
)
4

0 回答 0