我使用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"),
因此,当我尝试插入大量文档时,冲突很容易理解。
那么我该怎么办才能解决冲突?
答案 0 :(得分:0)
我假设你曾经看过的钥匙如下:
"_id" : ObjectId("55753c547e2596a4d07c2219")
由python驱动程序 pymongo 生成。
YCSB中的mongo模块使用java driver。当您调用insert时,实际上您正在调用:
com.mongodb.client.MongoCollection<TDocument>.insertOne
将抛出
com.mongodb.MongoWriteException: E11000 duplicate key error collection
插入相同的密钥。
如果您想运行基准测试,我认为您不必担心错误。无论如何,如果您不想看到错误,请更改您的工作量,替换insert by update。