Javascript mongoose-删除文档的数组元素,从数组中仅选择一个对象

Javascript mongoose-删除文档的数组元素,从数组中仅选择一个对象,javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我被困在这种情况下,无法猜测如何从没有键的数组中选择性地提取元素 我有一个像本例中那样组织的集合,并映射到猫鼬上: const userSchema = mongoose.Schema({ id: { type: String, required: true, unique: true }, site: { type: String, required: true }, employees: { type: Array, required: true} } employees是一个

我被困在这种情况下,无法猜测如何从没有键的数组中选择性地提取元素

我有一个像本例中那样组织的集合,并映射到猫鼬上:

const userSchema = mongoose.Schema({
  id: { type: String, required: true, unique: true },
  site: { type: String, required: true },
  employees: { type: Array, required: true}
}
employees是一个数组,包含数量可变的employees对象,没有顺序,其形状如下:

employees: [
    {
        "name" : "xxx",
        "surname" : "yyy",
        "email" : "email@address.com",
        
    },
    .
    .
    .
]
我通常通过聚合查询轻松地访问这些数据,以便按照我需要的方式对其进行塑造,但是,我无法通过选择来删除一名员工

我想通过使用它的电子邮件地址来删除整个employee对象,就像我要进行聚合搜索一样,但随后将其删除

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需要一个数组参数,但被指定为null”

这显然是错误的,但想不出更好的办法,有什么线索吗


谢谢

希望这就是你开始工作所需要的


希望,这就是你开始工作所需要的


你的request.params.email是数组吗?参考:否,是否使用数组中的一个元素来定位正确的数组元素是您的请求。params.email数组?参考:否,是我用于定位正确数组元素的数组元素之一。这只会从
employee
对象中删除
email
字段,不会删除整个
employee
object@rantao你确定?搜索“id”会找到正确的存储桶,然后我需要指向向量中的n元素并删除它,但我不知道索引。我可以在对象内部按值搜索,比如电子邮件。这应该是一个两阶段的过程吗?例如1:获取数组并定义索引号2:拖动数组这只会从
employee
对象中删除
email
字段,不会删除整个
employee
object@rantao你确定吗?搜索“id”会找到正确的bucket,然后我需要指向向量中的n元素并删除它,但我不知道指数。我可以在对象内部按值搜索,比如电子邮件。这应该是一个两阶段的过程吗?比如1:获取数组并定义索引号2:提取数组
db.collection.updateOne({
  id: 1
},
{
  $pull: {
    employee: {
      email: "2@address.com"
    }
  }
})