вставить много не работает в Монго БД почему? - PullRequest
0 голосов
/ 20 сентября 2019

Я пытаюсь вставить многие в mongoDB, используя .it только сохранить. 1001 * только почему. Вот мой код https://codesandbox.io/s/gallant-solomon-o91wp

Я сохраняю вот так

app.get("/saveData", async () => {
  try {
    const data = [
      {
        empid: "test123",
        date: "19-Jul-2019"
      },
      {
        empid: "test13",
        date: "18-Jul-2019"
      },

      {
        empid: "test13",
        date: "11-Jul-2019"
      }
    ];
    console.log("before save");
    let saveBlog = await BlogPostModel.collection.insertMany(data, {
      checkKeys: false
    }); //when fail its goes to catch
    console.log(saveBlog); //when success it print.
    console.log("saveBlog save");
  } catch (error) {
    console.log(error);
  }
});

попробуйте получить такие данные

app.get("/filter", async (req, res) => {
  try {
    let filterBlog = await BlogPostModel.find({});
    //when fail its goes to catch
    console.log(filterBlog); //when success it print.
    res.send(filterBlog);
  } catch (error) {
    console.log(error);
  }
});

, показывающий только один документ

enter image description here

1 Ответ

1 голос
/ 20 сентября 2019

Итак, как я и подозревал, в созданной вами коллекции есть еще один индекс, т.е. blogposts.индекс id [ключ id имя id_1].Вот весь ваш проект, я добавил в глюке.

Демонстрация

и здесь я также добавил один API /indexes, при этом извлекаются все индексы коллекции.по умолчанию _id должен быть там, дополнительные индексы добавляются после.так что здесь вы можете увидеть id, который должен быть уникальным.

я внес еще несколько изменений в ваш код.

Маршрут /saveData теперь в состояниивставлять записи.и у него есть поле с именем id, которое является уникальным.

но, старый маршрут, который теперь находится в /saveData_old, который выдаст вам ошибку, так как нет ключей, представляющих этот индексный ключ [id].[также после его вставки он будет иметь значение id, равное нулю, а остальные потерпят неудачу, просто вызывая дублирование]

, теперь вы можете либо использовать ключ id с уникальными значениями, либо, если вам это не нужно, можететакже опустите индекс.Вы можете найти ответ здесь о том, как удалить индекс.

...