2010-11-24 15 views
3

mongoDBを初めて使用しています。私は、WebアプリケーションでmongoDBを使用しています。mongoDBの内部文書属性の値を取得する方法は?

文書の内部文書属性の値を取得する方法を知りたい。

は私のJSONは、のような上記のJSONのために

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

であると言うことができます、どのように私はinnerValue1との両方innerValue1 & innerValue2を得ることができます。

私はこれを試しましたが、私のために働いていません!

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

感謝の気持ちがありますか?

ありがとうございました

答えて

2

私はあなたを取得していません。あなたは価値を得る必要がありますか、または文書の中にコレクションを設定するか追加しますか?

Javaのmongo dbのドライバを使用していることを理解しています。私はJavaのmongoドライバで経験していない。しかし、私は、ドライバまたはC#でこれを行うにはホ知っている:

次の操作を行う必要がある、コレクション内の更新インナープロパティのC#のMongoのドライバで:

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

を私は信じているJava用のmongoドライバで同じロジック。

このヘルプが必要です。

+0

あなたの答えをありがとう。 Javaドライバはドット表記法をサポートしていません。それが私の問題です。しかし、私はそれを行う別の方法を見つけた。しかし、私はあなたの努力を感謝します。 –

0

は答えが掲載されていなかったと私はちょうど答えを見つけたので、ここでは

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

クレジットはstackoverflowの上の別のポストに行くです。

+0

他の投稿へのリンクがある場合は、おそらくそれをあなたの答えに含めるべきです。 – Jack

+0

私はそれを見つけようとしていましたが、couldntでした。私がするとき、私はそれを含めるでしょう。 – Dhruv

関連する問題