首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >防止重复的mongoDB条目

问防止重复的mongoDB条目
EN

Stack Overflow用户
提问于 2018-05-18 03:27:45
回答 1查看 1.4K关注 0票数 0

我有一个带有猫鼬模式的mongoDB:

代码语言:javascript
复制
const newsSchema = new Schema({
   serverid: Number,
   resetid: Number,
   newsid: Number,
   timestamp: Number,
   type: Number,
   win: Number,
   attacker_num: Number,
   attacker_name: String,
   defender_num: Number,
   defender_name: String,
   result1: Number,
   result2: Number,
   a_tag: String,
   d_tag: String,
   killhit: Number
});

下面是我将CSV插入到我的mongoDB中的样子:

9,672,22697434-1408587629,5,1,351,LaFing at SoF,9,红旗,10,0,SoL,LaF,0 9,672,22697435,14085876 29,5,1 377,Commorragh,9,红旗,10,0,PDM,PDM,LaF,0 9,972,2269743,14085829,5,1,589,IX吻,9,红旗,10,SoL,LaF,0

字段#3从api中是唯一的,它从不被复制。在我的模式中,它被称为newsid。如果我的脚本要从提要中更新数据库,并且它试图插入另一行,其中包含一个已经在数据库中的newsid,那么有什么方法可以防止这种情况发生呢?

EN

回答 1

Stack Overflow用户

发布于 2018-05-18 03:32:38

唯一密钥约束会做你想做的事情。

可以使用模式字段选项在猫鼬中设置唯一键:

代码语言:javascript
复制
const s = new Schema({newsid: {type: Number, unique: true}});

或者通过index方法:

代码语言:javascript
复制
Schema.path('newsid').index({unique: true});

如果尝试创建一个已经有该键的条目的文档,则会引发一个错误:

注意:违反约束会在保存时从E11000返回MongoDB错误,而不是Mongoose验证错误。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50403346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档