Mongodb upsert 无法添加新文档
Mongodb upsert doesn't work adding new document
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);
相关文章:
- 如何筛选要写入新文档的HTML,删除JavaScript中的某些类和/或ID
- 服务器上的 Meteor.publish 不会在客户端上显示新文档
- 使用JavaScript,我可以上传一个word文件并使用.replaces然后另存为新文档吗
- Indesign:将单元格样式复制到新文档
- 猫鼬创建一个包含分类子文档的新文档
- 不显示带有搜索的重复控件中的新文档
- 仅在 Meteorjs 中添加新文档时更新订阅
- MongoDB:将字段移动到新文档并更新字段和数组
- 在 Couchdb ( 虹膜沙发 ) POST 请求中添加新文档失败,状态为 500
- Mongodb upsert 无法添加新文档
- 使用集合钩子将新文档的 id 添加到现有文档中的数组中
- 如果字段不在新文档中,则更新插入会删除该字段
- 如何知道Mongoose'的追加销售创建了一个新文档
- 让流星重新渲染“;新文档”;
- 如何将样式表粘贴到Rally应用程序中的新文档窗口中
- 流星DDP:当一个新文档被添加到集合中时,如何获得通知
- 从查询组合集合插入一个新文档
- document.open()是创建一个完整的新文档还是只是删除已经存在的文档?
- 如何合并电子表格并在新文档中设置其选项卡顺序
- JavaScript -写入新文档会删除空格