我正在嘗試使用 Mongoose/Node 從 MongoDB 中的陣列中洗掉一個物件,到目前為止我一直無法將其洗掉。我已經閱讀了檔案和 SO 帖子,但沒有運氣。我希望有人可以就解決方案給我具體建議,而不僅僅是指向另一篇模糊相關的帖子的鏈接
Mongo 檔案示例
{
managers: [{
userID: value,
// other fields and values
},
// Another object for another manager
]
}
我正在嘗試使用的代碼
await Model.updateMany(
{'managers.userID': userID}, // This should be the query part
{$pullAll: {'managers': {'userID': userID}}} // This should be the update part
)
uj5u.com熱心網友回復:
使用$pullAll你必須匹配整個物件。
除了查詢中的語法不正確之外,請檢查在此示例中id1 是如何未被洗掉但它是id2。那是因為$pullAll期望匹配整個物件。而這個其他例子工程同時去除ids。
然后,要進行查詢,您可以使用$pull并$in像這樣:
await Model.updateMany({
"managers.userID": userID
},
{
"$pull": {
"managers": {
"userID": {
"$in": userIDs
}
}
}
})
示例在這里
請注意如何$in期望陣列。如果您只想根據一個值進行洗掉,則可以避免$in:
await Model.updateMany({
"managers.userID": userID
},
{
"$pull": {
"managers": {
"userID": userID
}
}
})
示例在這里
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314296.html
