當子陣列包含某些值時,我們需要插入到子陣列中,但是在將 push 與 arrayFilter 一起使用時出現錯誤: fail to run update: write exception: write errors: [The field 'subArr.0' must be an array but is of type object in document {_id: "1"}]
您可以使用Playground重現它。
db.collection.update({},
{
$push: {
"subArr.$[a0]": {
"input1": "c",
"title": "s3"
}
}
},
{
arrayFilters: [
{
"a0.title": {
"$eq": "s1"
}
}
]
})
uj5u.com熱心網友回復:
對于你的場景,arrayFilters不適合。
它用于檢索與arrayFilter待更新元素的條件 (in )匹配的特定元素。
您正在嘗試$push反對subArr不是陣列的已過濾項。
相反,您必須過濾檔案以進行收集,然后按如下方式更新檔案:
db.collection.update({
"subArr.title": {
$eq: "s1"
}
},
{
$push: {
"subArr": {
"input1": "c",
"title": "s3"
}
}
},
// For update multiple documents
{
multi: true
})
注意:如果需要更新多個檔案,則需要添加
{ multi: true }
在您的查詢中。
示例 Mongo Playground
參考
arrayFilters 引數在 MongoDB 中的作業原理
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326165.html
標籤:mongodb
