【发布时间】:2021-12-14 15:14:22
【问题描述】:
用户架构:
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."
}
]
}
不确定是什么问题。
【问题讨论】:
标签: mongoose mongoose-schema mongo-shell