我出错了

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


这个ObjectId来自第一个insertOne(),但是第二个insertOne()命令失败,有人可以帮我这个忙。
刚学习Java驱动程序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));
    }
}

最佳答案

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

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


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

关于java - 重复键错误索引:insertOne MongoDB,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39413841/

10-12 05:25