node.js, чтобы проверить значение дублирования в mongoose - PullRequest
0 голосов
/ 11 мая 2018

Теперь я хотел бы сохранить свои данные json в mongoose, но дублированное значение пришлось отфильтровать.

my_json = [
  {"name":"michael","age":21,"sports":"basketball"},
  {"name":"nick","age":31,"sports":"golf"},
  {"name":"joan","age":41,"sports":"soccer"},
  {"name":"henry","age":51,"sports":"baseball"},
  {"name":"joe","age":61,"sports":"dance"},
];

Данные базы данных:

{
   "name":"joan","age":41,"sports":"soccer"
}

Есть ли какие-то конкретныеспособ избежать повторной вставки данных в мангуст напрямую?Может быть сохранено 4 значения, кроме значения "joan".

Как только я предполагаю попытаться использовать "для утверждения", все было в порядке.Однако я просто хочу сделать простой код для того, что может произойти в различных возможных кодах.

for(var i = 0; i < my_json.length; i++){
    // to check out duplicate value
    db.json_model.count({"name":my_json[i].name}, function(err, cat){
        if(cat.length == 0){
           my_json_vo.savePost(function(err) {

           });
        }
    })
};

Как видите, мне нужно использовать метод подсчета, независимо от того, дублируется ли значение или нет.Я не хочу использовать метод подсчета, но сделаю его проще ...

Не могли бы вы дать мне совет по этому поводу?

Ответы [ 2 ]

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

В дополнение к @Alex ответ о добавлении уникального ключа в поле name .

Вы можете использовать метод insertMany () с параметром упорядоченный , установленным в ложь . Вот так ...

let my_json = [
  {"name":"michael","age":21,"sports":"basketball"},
  {"name":"nick","age":31,"sports":"golf"},
  {"name":"joan","age":41,"sports":"soccer"},
  {"name":"henry","age":51,"sports":"baseball"},
  {"name":"joe","age":61,"sports":"dance"},
];
User.insertMany(my_json ,{ordered :false});

Этот запрос будет успешно выполняться и вставлять уникальные документы, а также выдает ошибку позже после успешной вставки. Итак, вы придете к знаю, что были повторяющиеся записи, но теперь в базе данных все записи уникальны.

Ссылка InsertMany с заказанным параметром

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

Вы можете пометить поле как unique в схеме mongoose :

var schema = new Schema({
   name: {type: String, required: true, unique: true}
   //...
});

Кроме того, вы можете добавить уникальный индекс для name поля в вашу базу данных:

db.js_model.createIndex( {"name": 1}, { unique: true, background: true } );

затем, если новая сущность с тем же именем будет запрошена на сохранение - Mongo не сохранит ее и не выдаст ошибку.

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