programing

(MongoDB Java) 어레이에 $push

telecom 2023. 6. 24. 08:47
반응형

(MongoDB Java) 어레이에 $push

저는 mongo 2.2.3과 java 드라이버를 사용하고 있습니다.제 딜레마입니다. 저는 필드와 가치를 배열에 $push해야 하는데, 어떻게 해야 할지 모르겠습니다.데이터 샘플:

"_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()));
DBObject listItem = new BasicDBObject("scores", new BasicDBObject("type","quiz").append("score",99));
DBObject updateQuery = new BasicDBObject("$push", listItem);
myCol.update(findQuery, updateQuery);

부터mongodb-driver 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));

셸의 쿼리 형식에 더 익숙하다면 사용하기가 더 쉬울 수 있습니다.JSON.parse당신의 것을DBObject를 위해$push:

import com.mongodb.util.JSON;

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

Jongo를 사용하면 셸과 같이 할 수 있습니다.

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

Java로 변환:

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

화려한 DBObject는 필요하지 않습니다 ;-)

MongoDB Java 드라이버는 이를 단순화할 수 있습니다.$push 대신 각각 $를 사용합니다.

$각 mongodb 참조 문서

Java 샘플 -

    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));

언급URL : https://stackoverflow.com/questions/15436542/mongodb-java-push-into-array

반응형