重复键错误索引:insertOne MongoDB

时间:2016-09-09 14:23:54

标签: java mongodb

我收到错误

duplicate key error index: my.own.$_id_ dup key: { : ObjectId('57d2c4857c137b20e40c633f')

这个ObjectId来自第一个insertOne(),但第二个insertOne()命令失败,任何人都可以帮助我。 刚学习Java Driver MongoDB

import com.mongodb.MongoClient;
import com.mongodb.MongoCredential;
import com.mongodb.ServerAddress;
import com.mongodb.client.MongoCollection;
import com.mongodb.client.MongoDatabase;
import com.sun.org.apache.xml.internal.security.utils.HelperNodeList;
import org.bson.Document;

import java.util.Arrays;

import static com.mongodb.MongoCredential.*;


public class Main {
    public static void main(String[] args){
        //Creating Credential Parameters
        //MongoCredential credential = createScramSha1Credential("root","my","root".toCharArray());
        //MongoClient to connect
        MongoClient mongo = new MongoClient();
        MongoDatabase database = mongo.getDatabase("my");
        MongoCollection<Document> collection = database.getCollection("own");
        Document document = new Document("x",1).append("y",3);
        collection.insertOne(document);
        collection.insertOne(document.append("z",3));
    }
}

2 个答案:

答案 0 :(得分:2)

您使用insertOne方法插入了一个文档,现在您尝试使用相同的方法来执行错误的更新操作。

{ collection.updateOne(document.append("z",3)); }

您必须使用updateOne方法更新文档。 insertOne实际上尝试将文档重新插入到您的mongo集合中,因此您会收到错误。

答案 1 :(得分:0)

你必须使用insertOne实际上尝试将文档重新插入你的mongo集合,因此你会收到错误。

现在,如果你想要另一个集合, collection.insertOne(文件); collection.insertOne(document.append(&#34; Z&#34;,3))。除去(_id));

如果你想要相同的收藏意味着,  collection.updateOne(document.append(&#34; Z&#34;,3))