BulkWriteError: E11000 коллекция повторяющихся ошибок ключа - PullRequest
0 голосов
/ 06 марта 2019

Я пытаюсь вставить массив объектов (данные, извлеченные из внешнего API) в mongoDB, используя db.collection.insert. После вставки нескольких документов я получаю эту ошибку:

BulkWriteError: Коллекция ошибок дубликатов ключей E11000: индекс bitcoin.bitcoins: id ключ дубликата: {: ObjectId ('5c7ee21ef0d6e663e84ef577')

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

Код выглядит так:

const express = require('express');
const router = express.Router();
const rp = require('request-promise');
const moment = require('moment');

var Bitcoin = require('../models/bitcoin_model');
var bitcoinArray = [];

var options = {
  method: 'GET',
  uri: 'https://bittrex.com/api/v1.1/public/getmarketsummaries',
  json: true
};

setInterval(function () {
  rp(options)
    .then(function (response) {
      response.result.forEach((item) => {
        bitcoinArray.push({
          timestamp: item.TimeStamp,
          marketname: item.MarketName,
          high: item.High,
          low: item.Low,
          volume: item.BaseVolume
        })
      })

      bitcoinArray.forEach((item) => console.log(item));
      Bitcoin.collection.insertMany(bitcoinArray, function (err, result) {
        if (err) {
          console.error(err);
        } else {
          console.log("Multiple documents inserted to Collection");
        }
      });

    })
  .catch((err) => {
    console.log(err);
  });
}, 60000);

Модель выглядит так:

    var mongoose = require('mongoose');

    var bitcoinSchema = mongoose.Schema({
      timestamp: Date,
      marketname: String,
      high: Number,
      low: Number,
      volume: Number
    });

    module.exports = mongoose.model('bitcoin', bitcoinSchema);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...