当前位置: 首页 > 知识库问答 >
问题:

插入时的MongoDb复制eror

苏坚成
2023-03-14

我正在mongod db Collection中插入文档

每次triggerdate和事件都会更改,但如果以任何时间间隔连续插入它们,则会出现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\u mssdemocustomer。testalerts索引:id dup键:{:ObjectId('507f191e810c19729de860ea')}在函数处。蒙哥罗。在toError(/Users/zessta/Desktop/MSSP/msspackend/msp backend/siem/node_modules/mongodb core/lib/error.js:31:11)创建(/Users/zessta/Desktop/MSSP/MSSP/MSSP/MSSP backend/msp backend/siem/node_modules/mongodb/lib/utils.js:139:22)在/Users/zessta/Desktop/msp/msp/msp backend/node_modules/mongodb/lib/lib/collection。js:668:23在handleCallback(/Users/zessta/Desktop/MSSP/MSSPBackend/msp backend/siem/node_modules/mongodb/lib/utils.js:120:56)在Resultandler(/Users/zessta/Desktop/MSSP/MSSPBackend/msp backend/siem/node_modules/mongodb/lib/bulk/orded.js:421:14)at/Users/zessta/Desktop/MSSP/msspackend/msp backend/siem/node_modules/mongodb core/lib/connection/pool。js:469:18在流程中结合了TickCallback(内部/流程/下一步)。js:73:7_tickCallback(内部/进程/下一个_tick.js:104:9)

如何生成立即插入的唯一id

共有1个答案

富涛
2023-03-14

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();
});
 类似资料:
  • 我有一张桌子 首先我跑 我跑完之后 我得到 错误:重复的键值违反唯一约束“users\u pkey”详细信息:键(id)=(1)已存在。 为什么我自己插入“id”时id序列不递增?

  • 主要内容:为什么使用复制,复制的工作方式,设置副本集,将成员添加到副本集MongoDB 中的复制就是跨多个服务器同步数据的过程,复制提供了数据的冗余备份,在多个服务器中存储数据副本,以此来提高数据的可用性,并可以保证数据的安全性。另外,复制还可以防止数据丢失,因为复制允许您从硬件故障或服务中断的过程中恢复数据。 为什么使用复制 下面列举了几个使用复制的好处: 确保您数据的安全; 保障数据的高可用性; 数据恢复; 维护过程无需停机(例如备份、索引重建、压缩); 分布式读

  • 主要内容:insert() 与 save() 方法,insertOne() 方法,insertMany() 方法前面我们已经介绍了如何在 MongoDB 中 创建数据库和 创建集合,接下来我们再来介绍一下如何在集合中插入文档。文档是 MongoDB 中数据的基本单位,由 BSON 格式(一种计算机数据交换格式,类似于 JSON)的键/值对组成。 insert() 与 save() 方法 您可以使用 MongoDB 中的 insert() 或 save() 方法向集合中插入文档,语法如下: db.

  • 我的意图是创建4个Emp对象。2个对象(e1和e2)具有相同的哈希代码。因此,当插入e1(插入在e2之后)时,hashmap会意识到具有相同哈希值的对象已经存在(对象e2)。然后它会将槽中所有对象的键与相同的哈希值进行比较。如果它找到一个具有匹配键的对象(通过调用下面Emp类的equals方法),它将用新值替换旧值。 下面请看一下测试代码: 我期望的输出:替换的记录名称:Terry,年龄:60名称

  • 我正在将CSV文件插入MongoDB。首先,我将CSV转换为Json格式的数组(参考:https://dzone.com/articles/how-to-convert-csv-to-json-in-java)然后尝试将其上载到MongoDB,但遇到以下错误(只有当CurrentBSONType为DOCUMENT时,才能调用readStartDocument,而当CurrentBSONType为A

  • 我主要是想理解在堆中插入一个新元素的大O和Omega背后的原因。我知道我可以在网上找到答案,但我真的喜欢有一个彻底的理解,而不是仅仅在网上找到答案,只是一味地记忆。 例如,如果我们有以下堆(以数组格式表示) 如果我们决定插入一个新元素“4”,那么我们的数组现在将如下所示 它将被放置在索引9中,由于这是第0个基于索引的数组,它的父数组将是索引4,也就是元素5。在这种情况下,我们不需要做任何事情,因为