mongodb 按ID从嵌套文档数组中删除单个文档

pnwntuvh  于 2022-11-22  发布在  Go
关注(0)|答案(1)|浏览(178)

我有一个用户的模型,这个用户也可以是一个司机,这个司机有一个汽车数组。我想从司机的所有汽车中删除一辆特定的汽车,但是我的查询删除了所有的汽车。
以下是架构:

const UserSchema = new mongoose.Schema({
      name: {
        type: String,
      },

  driverData: {
    ExperienceLevel: {
      type: String,
    },

    rides: [
      {
        type: mongoose.Schema.Types.ObjectId,
        ref: "ride.model",
      },
    ],

    cars: [
      {
        id: {
          type: mongoose.Schema.Types.ObjectId,
        },

        licensePlateNumber: {
          type: String,
        },
      },
    ],
  },
});

我用代码按身份证拉车。

user = await User.findByIdAndUpdate(
      { _id: userId },
      { driverData: { cars: { $pull: { id: carId } } } }
    );

在进行此查询后,只留下一个汽车对象和一个汽车id,所有其他数据都被删除。如何只删除一辆汽车。

lvmkulzt

lvmkulzt1#

您的语法不正确。请尝试:
user = await User.findByIdAndUpdate( { _id: userId }, { $pull: { driverData: { cars: { $elemMatch: { id: carId } } } } );

相关问题