mongodb Moongose更新/upsert中的唯一性和ID为空

unftdfkk  于 2023-01-25  发布在  Go
关注(0)|答案(2)|浏览(226)

我有这样一个模式:

export const HotelSchema = new mongoose.Schema({
  name: String,
  firstName: String,
  email: { type: String, unique: true },
  canLogin: Boolean
},
  {
    collection: "hotels"
  }
);

并使用以下查询添加/更新I am:

this.hotelModel.updateOne({ _id: hotel._id }, hotel, { upsert: true });

我经过的酒店目标:

{
 "email" : "er.markar@gmail.com",
 "name" : "sunny123"
}

但它插入了_id为空的重复电子邮件:
甚至我尝试了findOneAndUpdate。在电子邮件模式中尝试了autoIndex。仍然不起作用。
我错过什么了吗?

aelbi1ox

aelbi1ox1#

请参见www.example.comhttps://mongoosejs.com/docs/validation.html#the-unique-option-is-not-a-validator
事实上,你应该在一个字段上使用唯一索引。

dsf9zpds

dsf9zpds2#

你看,
您正在传递电子邮件和姓名。但您没有传递_id,因此将找不到hotel._id。您应该
此. hotelModel. updateOne({电子邮件:www.example.com},酒店,{upsert:true});hotel.email}, hotel, { upsert:true});

相关问题