복붙노트

[MONGODB] (MongoDB의 자바) 배열에 $ 추진

MONGODB

(MongoDB의 자바) 배열에 $ 추진

나는 몽고 2.2.3와 자바 드라이버를 사용하고 있습니다. 나의 딜레마는, 내가 배열로 필드 값을 밀어 $로,하지만 나는이 작업을 수행하는 방법을 알아낼 기운 다. 내 데이터의 샘플 :

"_id" : 1,
"scores" : [
    {
        "type" : "homework",
        "score" : 78.97979
    },
    {
        "type" : "homework",
        "score" : 6.99
    },
    {
        "type" : "quiz",
        "score" : 99
    }
]

나는 셸에서 밀어 $ 할 수 있습니다 :

db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})

내가 내 자신을 혼란 자바로이 번역하고 벽에 내 키보드 척 할 때 만입니다.

내 자바 코드 (불완전하고 잘못된) 지금까지 :

DBObject find = new BasicDBObject("_id", 1);
DBObject push = new BasicDBObject("$push", new BasicDBObject(
                        "scores", new BasicDBObject()));

해결법

  1. ==============================

    1.

    DBObject listItem = new BasicDBObject("scores", new BasicDBObject("type","quiz").append("score",99));
    DBObject updateQuery = new BasicDBObject("$push", listItem);
    myCol.update(findQuery, updateQuery);
    
  2. ==============================

    2.MongoDB를 드라이버 3.1입니다. 각 업데이트의 경우에 적절한 방법 작성기 클래스 com.mongodb.client.model.Updates있다. 이 경우이 될 것이다 :

    MongoDB를 드라이버 3.1입니다. 각 업데이트의 경우에 적절한 방법 작성기 클래스 com.mongodb.client.model.Updates있다. 이 경우이 될 것이다 :

    Document score = new Document().append("type", "quiz")
                                   .append("score",99);
    
    collection.updateOne(eq("_id", "1"),Updates.addToSet("scores", score));
    
  3. ==============================

    3.당신은 쉘의 쿼리 형식과 더 편안 경우, 당신은이 $ 푸시 대한 DBOBJECT를 구성하는 JSON.parse를 사용하여 쉽게 찾을 수 있습니다 :

    당신은 쉘의 쿼리 형식과 더 편안 경우, 당신은이 $ 푸시 대한 DBOBJECT를 구성하는 JSON.parse를 사용하여 쉽게 찾을 수 있습니다 :

    import com.mongodb.util.JSON;
    
    String json = "{$push:{scores:{type:'quiz', score:99}}}";
    DBObject push = (DBObject) JSON.parse(json);
    
  4. ==============================

    4.Jongo를 사용하면 셸에서 같이 할 수 있습니다 :

    Jongo를 사용하면 셸에서 같이 할 수 있습니다 :

    db.collection.update({_id:1},{$push:{scores:{type:"quiz", score:99}}})
    

    자바가된다 :

    collection.update("{_id:1}").with("{$push:{scores:{type:#, score:#}}}", "quiz", 99);
    

    어떤 공상 DBOBJECT는 필요하지 ;-)

  5. ==============================

    5.MongoDB의 자바 드라이버가이를 단순화 할 수 있습니다. 사용 대신 $ 푸시 각각 $.

    MongoDB의 자바 드라이버가이를 단순화 할 수 있습니다. 사용 대신 $ 푸시 각각 $.

    각 MongoDB를 참조 문서를 $

    자바 샘플 -

        BasicDBObject addressSpec = new BasicDBObject();
        addressSpec.put("id", new ObjectId().toString());
        addressSpec.put("name", "one");
    
        BasicDBObject addressSpec2 = new BasicDBObject();
        addressSpec2.put("id", new ObjectId().toString());
        addressSpec2.put("name", "two");
    
        List<BasicDBObject> list = new ArrayList<>();
        list.add(addressSpec); list.add(addressSpec2);
    
        UpdateResult updateOne = individualCollection.updateOne(Filters.eq("_id", "5b7c6b612612242a6d34ebb6"), 
                Updates.pushEach("subCategories", list));
    
  6. from https://stackoverflow.com/questions/15436542/mongodb-java-push-into-array by cc-by-sa and MIT license