Подтвердить что ты не робот

MongoError: Недействительная операция, никаких операций навалом

Я не могу делать массовую вставку в монго с помощью мангуста.

var mongoose = require('mongoose');
var Schema = mongoose.Schema;

// Define our results schema
var webSchema = new Schema({"abc" : String},{
  collection: 'web_v2'
});

MyApi.prototype.Webs= mongoose.model('Webs', webSchema);

resultData = [{"abc": "12121221"},{"abc": "44545"},{"abc": "545"}]

MyApi.prototype.Webs.collection.insert(resultData, function (err, myDocuments) {
  if (err) {
    console.log(err);
  } else {
    console.log("web inserted : " + myDocuments.result.n);
  }
});

Я получаю следующую ошибку

MongoError: Invalid Operation, No operations in bulk
at Function.MongoError.create (/pathtoapp/node_modules/mongoose/node_modules/mongodb/node_modules/mongodb-core/lib/error.js:31:11)
at toError (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/utils.js:114:22)
at OrderedBulkOperation.execute (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/bulk/ordered.js:500:11)
at bulkWrite (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:582:8)
at Collection.insertMany (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:477:44)
at Collection.insert (/pathtoapp/node_modules/mongoose/node_modules/mongodb/lib/collection.js:753:15)
at NativeCollection.(anonymous function) as insert (/pathtoapp/node_modules/mongoose/lib/drivers/node-mongodb-native/collection.js:136:28)
at /pathtoapp/index.js:481:57
at /pathtoapp/node_modules/async/lib/async.js:721:13
at /pathtoapp/node_modules/async/lib/async.js:52:16
at async.forEachOf.async.eachOf (/pathtoapp/node_modules/async/lib/async.js:236:30)
at _parallel (/pathtoapp/node_modules/async/lib/async.js:712:9)
at Object.async.parallel (/pathtoapp/node_modules/async/lib/async.js:726:9)
at /pathtoapp/index.js:479:43
at /pathtoapp/node_modules/async/lib/async.js:721:13
at /pathtoapp/node_modules/async/lib/async.js:52:16

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

4b9b3361

Ответ 1

Скорее всего, вы пытаетесь вставить пустой массив.

Ниже приведена ссылка ссылка сайта MongoDB Jira на эту ошибку

Это, вероятно, вызвано вашей последней попыткой insertMany вставить пустой массив []. Я предлагаю вам вставить insertMany.

Ответ 2

Вот мой чек в базовом блоке if, если вы использовали необработанный драйвер MongoDB для Node js, он может помочь:

let col = dbContext.collection("collectionName");
let bulk = col.initializeUnorderedBulkOp();

if(bulk && bulk.s && bulk.s.currentBatch 
&& bulk.s.currentBatch.operations 
&& bulk.s.currentBatch.operations.length > 0){
//execute operations
}

Ответ 3

Просто проверьте, есть ли у массивного экземпляра операции до вызова execute с помощью этой функции:

const BulkHasOperations = (b) => b && b.s && b.s.currentBatch && b.s.currentBatch.operations && b.s.currentBatch.operations.length > 0;
...
const bulk = db.collection('something').initializeUnorderedBulkOp();
...
BulkHasOperations(bulk) && bulk.execute();