Предотвращение дублирования записей mongoDB - PullRequest
0 голосов
/ 18 мая 2018

У меня есть mongoDB со схемой mongoose:

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 API, который я вставляю в свою mongoDB:

9,672,22697434,1408587629,5,1,351,LaFing at SoF,9,ReDflag,10,0,SoL,LaF,0
9,672,22697435,1408587629,5,1,377,Commorragh,9,ReDflag,10,0,PDM,LaF,0
9,672,22697436,1408587629,5,1,589,The IX Kiss,9,ReDflag,10,0,SoL,LaF,0

Поле № 3 уникально от API, оно никогда не дублируется.В моей схеме это называется newsid.Если мой сценарий обновляет базу данных из ленты и пытается вставить еще одну строку, содержащую новостной идентификатор, который уже находится в базе данных, есть ли способ предотвратить это?

1 Ответ

0 голосов
/ 18 мая 2018

A ограничение уникального ключа будет делать именно то, что вы хотите.

Уникальный ключ может быть установлен в mongoose с любым из параметров поля схемы:

const s = new Schema({newsid: {type: Number, unique: true}});

или методом index:

Schema.path('newsid').index({unique: true});

Если будет предпринята попытка создать документ, в котором уже есть запись для этого ключа, произойдет ошибкабыть брошенным:

ПРИМЕЧАНИЕ: нарушение ограничения возвращает ошибку E11000 из MongoDB при сохранении, а не ошибку проверки Mongoose.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...