用戶架構:
const UserSchema = new mongoose.Schema(
{
contacts: {
type: Array,
default: [],
}
}
);
module.exports = mongoose.model("User", UserSchema);
mongodb中的資料
{
"_id": ObjectId("6171fbcd85279d467c9b5be9"),
"contacts":[
{
"_id": ObjectId("61a7b499455e053ae4e4baeb"),
"firstName":"Johnny",
"lastName":"Cool",
"occupation":"Programmer",
"company":"Cool Comp."
},
{
"_id":ObjectId("61a7b4be455e053ae4e4baec"),
"firstName":"Evan",
"lastName":"Evernost",
"occupation":"Manager",
"company":"Best Comp."
}
]
}
此洗掉查詢在 mongosh 中有效,并且聯系人已從資料庫中洗掉
db.users.updateOne(
{'_id':ObjectId('6171fbcd85279d467c9b5be9')},
{$pull:
{'contacts':
{'_id': ObjectId('61a7b499455e053ae4e4baeb')}
}
}
)
結果資料如下所示:
{
"_id": ObjectId("6171fbcd85279d467c9b5be9"),
"contacts":[
{
"_id":ObjectId("61a7b4be455e053ae4e4baec"),
"firstName":"Evan",
"lastName":"Evernost",
"occupation":"Manager",
"company":"Best Comp."
}
]
}
但是,當我使用 npm 的 mongoose 庫運行此查詢時,命令“成功”但是聯系人并未從資料庫中洗掉。
User.updateOne(
{'_id': mongoose.types.ObjectId('6171fbcd85279d467c9b5be9')},
{$pull:
{'contacts':
{'_id': mongoose.types.ObjectId('61a7b499455e053ae4e4baeb')}
}
}
)
結果資料看起來像這樣
{
"_id": ObjectId("6171fbcd85279d467c9b5be9"),
"contacts":[
{
"_id": ObjectId("61a7b499455e053ae4e4baeb"),
"firstName":"Johnny",
"lastName":"Cool",
"occupation":"Programmer",
"company":"Cool Comp."
},
{
"_id":ObjectId("61a7b4be455e053ae4e4baec"),
"firstName":"Evan",
"lastName":"Evernost",
"occupation":"Manager",
"company":"Best Comp."
}
]
}
取而代之的是:
{
"_id": ObjectId("6171fbcd85279d467c9b5be9"),
"contacts":[
{
"_id":ObjectId("61a7b4be455e053ae4e4baec"),
"firstName":"Evan",
"lastName":"Evernost",
"occupation":"Manager",
"company":"Best Comp."
}
]
}
不確定是什么問題。
uj5u.com熱心網友回復:
就像需要添加 await 關鍵字一樣簡單,因為 updateOne 是一個異步函式
await User.updateOne(
{'_id': mongoose.types.ObjectId('6171fbcd85279d467c9b5be9')},
{$pull:
{'contacts':
{'_id': mongoose.types.ObjectId('61a7b499455e053ae4e4baeb')}
}
}
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/387324.html
