개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.21 06:27

MongoDBDriverManager::executeWriteCommand의 오류 해결 방법

목록
  • 화이트해커연구가 1일 전 2025.03.21 06:27
  • 2
    1
저는 최근에 MongoDB와 Java를 연결하는 작업을 하면서 MongoDBDriverManager::executeWriteCommand를 사용하여 데이터를 삽입하고 업데이트 하는 작업을 해왔습니다. 하지만 최근에 발생한 오류로 인해 executeWriteCommand를 사용할 수 없게 되었습니다. 오류 내용은 다음과 같습니다.



java.lang.IllegalArgumentException: Invalid write concern



오류가 발생한 이유를 모르고, 어떻게 해야 오류를 해결할 수 있는지 궁금합니다.

오류가 발생한 코드는 다음과 같습니다.

java

MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");

MongoDatabase mongoDatabase = mongoClient.getDatabase("mydatabase");

MongoCollection collection = mongoDatabase.getCollection("mycollection");



Document document = new Document("_id", 1)

        .append("name", "John")

        .append("age", 30);

collection.insertOne(document);



오류가 발생한 부분은 collection.insertOne(document); 부분입니다. 이 부분에서 오류가 발생하여 executeWriteCommand를 사용할 수 없게 되었습니다.

오류를 해결할 수 있는 방법을 알려주시면 감사하겠습니다.

해당 오류를 해결하기 위해, executeWriteCommand를 사용하는 방법은 어떻게 해야 하나요?

다음과 같이 사용할 수 있나요?

java

MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");

MongoDatabase mongoDatabase = mongoClient.getDatabase("mydatabase");

MongoCollection collection = mongoDatabase.getCollection("mycollection");



Document document = new Document("_id", 1)

        .append("name", "John")

        .append("age", 30);

WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED;

collection.executeWriteCommand(new Command(BsonDocument.parse("{insert: 'mycollection', documents: [{" + 

        "id: 1," + 

        "name: 'John'," + 

        "age: 30" + 

        "}]}"), writeConcern));



이렇게 사용하면 오류가 발생하나요?

혹시 다른 방법이 있나요?

해당 오류를 해결하기 위해, executeWriteCommand를 사용하는 방법에 대해 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    executeWriteCommand를 사용할 수 없게 된 이유는 Invalid write concern 오류로 인해 발생한 것입니다. 이 오류는 write concern이 설정되지 않았거나, 잘못된 write concern이 설정된 경우에 발생합니다.

    해결 방법은 다음과 같습니다.

    1. Write concern을 설정하십시오. WriteConcern.ACKNOWLEDGED를 사용하여 write concern을 설정할 수 있습니다.

    #hostingforum.kr
    java
    
    WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED;
    
    collection.insertOne(document, writeConcern);
    
    


    2. executeWriteCommand를 사용하지 마십시오. insertOne 메소드를 사용하여 데이터를 삽입할 수 있습니다.

    #hostingforum.kr
    java
    
    collection.insertOne(document);
    
    


    3. MongoDB의 버전을 확인하십시오. MongoDB 3.6부터 write concern이 기본적으로 설정됩니다. 따라서 executeWriteCommand를 사용할 수 없게 된 것입니다.

    #hostingforum.kr
    java
    
    MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
    
    MongoDatabase mongoDatabase = mongoClient.getDatabase("mydatabase");
    
    MongoCollection collection = mongoDatabase.getCollection("mycollection");
    
    
    
    Document document = new Document("_id", 1)
    
            .append("name", "John")
    
            .append("age", 30);
    
    
    
    WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED;
    
    collection.insertOne(document, writeConcern);
    
    


    4. MongoDB의 버전을 업그레이드하십시오. MongoDB 3.6 이상의 버전을 사용하여 executeWriteCommand를 사용할 수 있습니다.

    #hostingforum.kr
    java
    
    MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
    
    MongoDatabase mongoDatabase = mongoClient.getDatabase("mydatabase");
    
    MongoCollection collection = mongoDatabase.getCollection("mycollection");
    
    
    
    Document document = new Document("_id", 1)
    
            .append("name", "John")
    
            .append("age", 30);
    
    
    
    WriteConcern writeConcern = WriteConcern.ACKNOWLEDGED;
    
    collection.executeWriteCommand(new Command(BsonDocument.parse("{"insert: 'mycollection', documents: [{" +
    
            ""id: 1," +
    
            ""name: 'John'," +
    
            ""age: 30" +
    
            ""}]}"), writeConcern));
    
    


    5. MongoDB의 버전을 확인하고, 버전이 3.6 이하인 경우, write concern을 설정하지 않도록 하십시오.

    #hostingforum.kr
    java
    
    MongoClient mongoClient = MongoClients.create("mongodb://localhost:27017");
    
    MongoDatabase mongoDatabase = mongoClient.getDatabase("mydatabase");
    
    MongoCollection collection = mongoDatabase.getCollection("mycollection");
    
    
    
    Document document = new Document("_id", 1)
    
            .append("name", "John")
    
            .append("age", 30);
    
    
    
    collection.insertOne(document);
    
    

    2025-03-21 06:28

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 5,347건 / 16 페이지

검색

게시물 검색