0

我使用 ycsb 来测试 mongodb。
加载 3000000 个文档后,我尝试运行插入步骤,但遇到以下问题:

Exception while trying bulk insert with 0 com.mongodb.MongoWriteException: insertDocument :: 
caused by :: 11000 E11000 duplicate key error 
index: ycsb.usertable.$_id_  dup key: { : "user451605437247003858" }

我发现当我执行加载步骤时,每个文档的 _id 有点像

"_id" : "user1136", 
"_id" : "user1130" 

等等。这不是我遇到的通常喜欢的

"_id" : ObjectId("55753c547e2596a4d07c2219"),

所以我尝试插入大量文档时的冲突很容易理解。

那么我能做些什么来解决冲突呢?

4

1 回答 1

0

我假设您以前看到的密钥如下所示:

"_id" : ObjectId("55753c547e2596a4d07c2219")

由 python 驱动程序pymongo生成。

YCSB 中的 mongo 模块使用java 驱动程序。当您调用插入时,实际上您正在调用:

com.mongodb.client.MongoCollection<TDocument>.insertOne

哪个会抛出

com.mongodb.MongoWriteException: E11000 duplicate key error collection   

当您插入相同的密钥时。

如果你想运行基准测试,我认为你不需要担心错误。无论如何,如果您不想看到错误,请更改您的工作量,将插入替换为更新。

于 2016-04-20T09:44:30.763 回答