2010-11-24 7 views
3

mongoDB를 처음 사용했습니다. 웹 응용 프로그램에서 mongoDB를 사용하고 있습니다.mongoDB에서 내부 문서 속성의 값을 가져 오는 방법은 무엇입니까?

문서의 내부 문서 속성 값을 얻는 방법을 알고 싶습니다.

내 JSON 같은 말하는 내가 innerValue1을 얻을 수있는 방법 위의 JSON에 대한

{ "_id" : { "$oid" : "4ceb753a70fdf877ef5113ca"}, "Attrr1" : "value1", "Attr2": {"innerAttr1":"innerValue1", "innerAttr2":"innerValue2"}, "Attr3" : { "innerAttr3" : "innerValue3", "innerAttr4" : "innerValue4"} } 

, 두 innerValue1 & innerValue2을 할 수 있습니다.

나는 이것을 시험해 보았다. 그러나 그것은 나에게 맞지 않았다!

BasicDBObject innerQuery = new BasicDBObject(); 
field.put("Attr2.innerAttr1", 1); 

어떤 제안이라도 감사 할 것입니다.

감사합니다.

답변

2

나는 당신을 얻을 수 없습니다. 가치를 얻거나 일부 문서 안의 컬렉션을 설정하거나 추가해야합니까?

Java에서 mongo db 용 드라이버를 사용하고있는 것으로 알고 있습니다. 나는 자바 용 mongo 드라이버에서 경험하지 못했습니다. 당신이 할 필요가 컬렉션의 갱신 내부 속성에 대한

C에서 #의 몽고 드라이버는 다음과 같습니다 :하지만 드라이버 또는 C#에서이 작업을 수행 할 호 알고

var query = Query.Eq("_id", documentId); 
var update = Update.Set("Attr2.innerAttr1",1); 

MongoDb.Database.GetCollection("collectionName").Update(query, update); 

경우 코드 retun 하나 개의 문서 위의 쿼리 -에서 innerAttr1 속성 Attr2 컬렉션이 업데이트됩니다. 내가 그 쿼리 반환 더 이상의 문서를 알고 난 더 그쪽으로 하나의 문서를 업데이트해야 할 경우 내가 같은 코드를 사용합니다

MongoDb.Database.GetCollection("collectionName").Update(query, update, UpdateFlag.Multi); 

을 나는 믿지 그 자바에 대한 몽고 드라이버 같은 논리.

희망 도움말.

+0

답변 해 주셔서 감사합니다. Java 드라이버는 도트 표기법을 지원하지 않습니다. 그것이 나를위한 문제입니다. 그러나 나는 그것을 할 또 다른 방법을 찾았다. 하지만 나에 대한 당신의 노력에 감사드립니다. –

0

대답은 게시되지 않았고 난 그냥 답을 찾을 수 있기 때문에, 여기가

(BasicDBObject)(query.get("Attr2")).getString("InnerAttr1") 
where query = (BasicDBObject) cursor.next() 

신용에 유래의 다른 포스트로 이동합니다.

+0

다른 게시물에 대한 링크가있는 경우 답변에 포함해야합니다. – Jack

+0

나는 그것을 찾으려고했지만 couldnt했다. 내가 할 때, 나는 그것을 포함시킬 것이다. – Dhruv

관련 문제