2012-04-11 15 views
1

を使用してJSONオブジェクトに新しいアレイを追加します。削除と私はJSONオブジェクトを持っているのMongoDB

{ "_id": "1"、 "_class": "com.model.Test"、 "projectList": [{ "PROJECTID": "春"、 "resourceIDList":[ "マーク"、 "デービッド"]}、 { "PROJECTID": "MongoDBの"、 "resourceIDList":[「NOSA]}

Project "Spring"のresourceIDListを削除し、新しいResourceIDListを割り当てる必要があります。

埋め込まれた文書照合{「projectList.projectID」:「春」}でresourceIDListの交換

Query query = new Query(where("_id").is("1").and("projectID").is("Spring"));  

mongoOperations.updateMulti(query,new Update().set("ressourceIDList", populateResources()), Test.class); 

答えて

2

:私は、何もDBで更新されていない、次を使用しようとするたびにResourceIDListがちょうど一覧

あるかもしれJavaScriptシェルでは (私はJSシェルで始めるのが好きです。なぜなら、Javaよりもあまり冗長ではなく、構文が比較的単純であるからです。 JSとの例としては、言語ドライバのいずれにも適用することができる。)

> db.collection.update({_id:"1", "projectList.projectID":"Spring"}, {$set:{"projectList.$.resourceIDList":["Something", "new"]}}) 

埋め込まれた文書を修正するために「$」演算子を使用して上のドキュメントはの「$位置演算子」のセクションで見ることができます」更新」ドキュメント: http://www.mongodb.org/display/DOCS/Updating#Updating-The%24positionaloperator に埋め込まれた文書の詳細情報があり、 『ドット表記(オブジェクトに到達)』マニュアル:

http://www.mongodb.org/display/DOCS/Dot+Notation+%28Reaching+into+Objects%29

は、上記のようにのようなJavaドライバで行うことができます

{"projectList.projectID": "Spring"}に一致する複数のドキュメントがある場合は、multi = trueオプションを使用してそれらを一度に更新できます。 Javaドライバで、それは次のようになります。上記で

myColl.update(myQuery, myUpdate, false, true); 

を、「偽」「アップサート=偽」を表し、「真の」「マルチ= true」を表しています。これは、「更新」コマンドのドキュメントで説明されています。 http://www.mongodb.org/display/DOCS/Updating#Updating-update%28%29

残念ながら、私はSpringフレームワークに精通していないですので、私はどのように「mongoOperations」クラスでこれを行うにはあなたを伝えることができません。うまくいけば、上記のようにMongoで埋め込まれた文書をどのように更新するかについての理解が向上し、Springで何をする必要があるのか​​を理解することができます。

+1

この度はありがとうございました。 – Echo

関連する問題