Mongodb upsert 无法添加新文档

Mongodb upsert doesn't work adding new document

本文关键字:文档 新文档 添加 upsert Mongodb      更新时间:2023-09-26
Category.findOneAndUpdate({"_id":category_id},update,{upsert: true},callback);

当我更新已存在的 id 但未为其创建新文档的类别时,这有效。我希望通过在此处使用 upsert 来发生这种情况,但它不起作用。未返回任何错误。

如果你的模型是这样的:

var Category = new Schema({
   categoryid:{
     type: Number,
     unique: true,
     required: true
   },
   category_name:{
     type: String,
     required: true
   }
});

#possible 问题一

{ [CastError: Cast to ObjectId failed for value "23" at path "_id"]
message: 'Cast to ObjectId failed for value "23" at path "_id"'}

原因

// query with invalid id
Category.findOneAndUpdate({"_id":"23"},update,{upsert: true},callback);

也许您的_id不是有效的mongo对象ID,通常mongoID的长度为24个字符("v387h39f8538457f3fh09485"

#possible 问题二

{ [MongoError: exception: E11000 duplicate key error 
index: test.categories.$categoryid_1 dup key: { : 27 } name: 'MongoError'}

原因

在我的示例模型上,字段categoryid应该是唯一的,因此如果您尝试插入重复的categoryid则可能会发生错误来更新您的文档

// log the result on callback, check if there is any error
console.log(err || result);