我坚持这种情况,无法猜测从没有键的数组中选择性提取元素的方式。
我有一个如本例中所示组织的集合,并映射到了猫鼬:
const userSchema = mongoose.Schema({
id: { type: String, required: true, unique: true },
site: { type: String, required: true },
employees: { type: Array, required: true}
}
employees是一个数组,其中包含可变数量的无序雇员对象,其形状如下:
employees: [
{
"name" : "xxx",
"surname" : "yyy",
"email" : "email@address.com",
},
.
.
.
]
我通常通过聚合查询轻松地访问此数据,以按照我需要的方式对其进行调整,但是,我无法通过选择它来删除一名员工。
我想通过使用电子邮件地址选择整个员工对象来删除整个员工对象,就像我要进行汇总搜索一样,然后删除它。
AccessList.aggregate([
{ '$match': id},
{ '$unwind': '$employees' },
{ '$match': email}])
///then delete this whole object returned
到目前为止,我最好的尝试是使用updateOne,但是它当然会返回错误:
AccessList.updateOne( {'id': request.params.date}, { $pullAll: {'employees.email': request.params.email } } )
“ $ pullAll需要一个数组参数,但被赋予一个空值”
这显然是错误的,但是找不到更好的方法了吗?
谢谢!
答案 0 :(得分:2)
希望这是开始滚球所需要的...
https://mongoplayground.net/p/Uv8ERuZ_RF3
db.collection.updateOne({
id: 1
},
{
$pull: {
employee: {
email: "2@address.com"
}
}
})