반응형
(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 대신 각각 $를 사용합니다.
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
반응형
'programing' 카테고리의 다른 글
MongoDB를 사용하는 것보다 더 크거나 더 적은 작업을 수행하려면 어떻게 해야 합니까? (0) | 2023.06.29 |
---|---|
Oracle SQL: 타임스탬프를 UTC로 변환 (0) | 2023.06.29 |
MongoDB: 논문에서 스키마 다이어그램을 어떻게 표현합니까? (0) | 2023.06.24 |
열이 래핑되지 않도록 오라클 쿼리를 포맷하려면 어떻게 해야 합니까? (0) | 2023.06.24 |
VB 스크립트를 실행하는 동안 Excel의 모든 대화 상자를 사용하지 않도록 설정하시겠습니까? (0) | 2023.06.24 |