7

spring-data-mongo永続化するものがたくさんあるアプリケーションに 使用し始めました。

宣伝されているため、実際にmongoを選択しました。Spring にどっぷりハマってしまった私たちは、Spring の機能のいくつかを使用することで、とても楽な生活を送っていることに気付きました (Spring データの懸命な作業に感謝します)。

しかし、1 つだけあります60 fields。それで、私の質問はspeedscalabilityそれが spring-data-mongo でのみ更新できるというdirty fieldsことmongo databaseですHibernateか? ここで説明された方法に少し似てい ますArthur Ronald F D Garcia

これを読んでくれてありがとう

4

1 に答える 1

5

MongoDB ドキュメントから:

update引数にフィールドと値のペアのみが含まれている場合、 update() メソッドは、_id フィールドを除いて、既存のドキュメントをupdate引数のドキュメントに置き換えます。

つまり、MongoDB の更新は、説明したとおりに機能します。したがって、テスト コレクションにこのドキュメントがある場合:

{ "_id" : "123", "oldfield" : "oldvalue" }

そして、mongo CLI で以下を実行します。

db.test.update({"_id": "123"}, { newfield : "value" })

新しいドキュメントは次のようになります。

{"_id": "123", "newfield" : "value"}

一部のフィールドのみを変更する場合は、1 つ以上のフィールドの値を設定する $set 演算子を使用できます。春のデータを使用しているため、MongoTemplate クラスを使用してこの更新を行う必要があります。

Query q = new Query(Criteria.where("_id").is("123"));
Update u = Update
            .update("newfield", "value")
            .set("oldfield", "newvalue");

this.template.findAndModify(query, update, Entity.class);

ここで $set operator と mongodb update について読むことができます: http://docs.mongodb.org/manual/reference/operators/#_S_set http://docs.mongodb.org/manual/applications/update

于 2012-12-05T00:31:17.040 に答える