[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.
DBObject listItem = new BasicDBObject("scores", new BasicDBObject("type","quiz").append("score",99)); DBObject updateQuery = new BasicDBObject("$push", listItem); myCol.update(findQuery, updateQuery);
-
==============================
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.당신은 쉘의 쿼리 형식과 더 편안 경우, 당신은이 $ 푸시 대한 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.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.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));
from https://stackoverflow.com/questions/15436542/mongodb-java-push-into-array by cc-by-sa and MIT license
'MONGODB' 카테고리의 다른 글
[MONGODB] 배열 내에서 MongoDB를 이름 바꾸기 데이터베이스 필드 (0) | 2019.12.09 |
---|---|
[MONGODB] MongoDB의 배열에서 특정 요소를 받기 [중복] (0) | 2019.12.09 |
[MONGODB] MongoDB를 가진 배열에서 특정 항목을 삭제 (0) | 2019.12.09 |
[MONGODB] 컬렉션에서 최대 값을 얻는 방법을 MongoDB를 (0) | 2019.12.09 |
[MONGODB] 필드 / 키마다 고유 값 MongoDB의 카운트 수가 (0) | 2019.12.09 |