首页 文章

插入时出现MongoDb重复错误

提问于
浏览
1

我在mongod db colletion中插入文件

每次触发日期和事件都会发生变化,但如果连续插入任何时间间隔我们都会得到mongo重复错误 .

但如果我们正在插入时间,那么它就会被插入 .

var MongoClient = require('mongodb').MongoClient;

     var msgObj = {
      "event" : "Password expired",
   "assignee" : "Test",
      "triggerDate" : "06/21/2018 18:44:27", }
 var url  ="mongodb://127.0.0.1:27017/org_democustomer"
           for( var i=0; i<300;i++){

              MongoClient.connect(url, function (err, db) {
                  var connection = db;
                   var collection = db.collection('events');
                    // Insert all customer's tickets into document
                  collection.insert(msgObj, function (err, result) {
                    if (err) throw err;
                     connection.close();
                 });
            });
    }

那么,ObjectId的创建方式是什么?是基于时间吗?错误是

MongoError:E11000重复键错误集合:org_mssdemocustomer.testalerts索引:id重复键:{:ObjectId('507f191e810c19729de860ea')}在Function.MongoError.create(/ Users / zessta / Desktop / MSSP / MSSPBackend / msp-backend / siem /node_modules/mongodb-core/lib/error.js:31:11)atError(/Users/zessta/Desktop/MSSP/MSSPBackend/msp-backend/siem/node_modules/mongodb/lib/utils.js:139:22 )在/Users/zessta/Desktop/MSSP/MSSPBackend/msp-backend/siem/node_modules/mongodb/lib/collection.js:668:23 at handleCallback(/ Users / zessta / Desktop / MSSP / MSSPBackend / msp-backend /) siem / node_modules / mongodb / lib / utils.js:120:56)在resultHandler(/Users/zessta/Desktop/MSSP/MSSPBackend/msp-backend/siem/node_modules/mongodb/lib/bulk/ordered.js:421: 14)在/Users/zessta/Desktop/MSSP/MSSPBackend/msp-backend/siem/node_modules/mongodb-core/lib/connection/pool.js:469:18在_combinedTickCallback(internal / process / next_tick.js:73: 7)at process._tickCallback(internal / process / next_tick.js:104:9)

如何为立即插入生成唯一ID

1 回答

  • 0

    ObjectId值 . 12字节的ObjectId值包括:

    • 4字节值,表示自Unix纪元以来的秒数,

    • 3字节机器标识符,

    • 2字节进程ID,和

    • 3字节计数器,以随机值开头 .

    这是你的代码工作正常 .

    var MongoClient = require('mongodb').MongoClient;
    var ObjectID = require('mongodb').ObjectID
    var msgObj = {
        "event": "Password expired",
        "assignee": "Test",
        "triggerDate": "06/21/2018 18:44:27"
    }
    var url = "mongodb://127.0.0.1:27017"
    
    MongoClient.connect(url, function(err, db) {
    if (err) {
        console.log(err);
    }
    for (var i = 0; i < 300; i++) {
        //var connection = db;
        //var collection = db.collection('events');
        var dbo = db.db("org_democustomer1");
        // Insert all customer's tickets into document
        msgObj._id = new ObjectID();
        dbo.collection("events").insert(msgObj, function(err, result) {
            if (err) throw err;
        });
    }
    db.close();
    });
    

相关问题