2

一意のインデックスに違反する他のドキュメントを挿入しようとしているときに、DB 内の既存のドキュメントを更新 (save() のように挿入されたレコードから新しいデータを追加) できる方法 (構成/操作) があるのだろうか.. ??

ありがとう

特定のソーシャル ネットワークに関連するドメイン ユーザー プロファイルを表す SocialProfile ドキュメントがあります。
SNSの種類+そのネットワークでユニークなユーザーの組み合わせをユニークとして使いたいです。

{ type : "FB" , unique:"1111111111" }

最初は、これら 2 つの文字列を 1 つに結合し、連結をドキュメント ID として使用することを考えました。その後、ドキュメントの保存中にアップサートが自動的に行われますが、間違ったアプローチのように感じます。私が間違っている場合。

もっと理にかなっているのは、これらをプロパティに複合一意インデックスとして定義することです..
そして、そのインデックスに従ってこれらのドキュメントのアップサートを実行する機能が必要です..Spring
Dataフレームワークで作業していますが、この種の操作を一般的にサポートするには春のデータ固有。

助けてくれてありがとう

4

1 に答える 1

3

Chris が言ったように、upsert はおそらくこれを行う正しい方法です。サンプルデータはありますか?簡単な例を次に示します。

db.coll.update(
  /* query */ {keys:"from", unique:"index"}, 
  /* new document */ {keys:"from", unique:"index", new_value:"foo"}, 
  /* upsert */ true, 
  /* multi */ false);

クエリで指定されたキーを使用してドキュメントをクエリし、存在する場合は、提供されたドキュメントでそのドキュメントを更新します。そのドキュメントが存在しない場合は、新しいドキュメントが作成されます。

于 2012-09-11T20:18:04.967 に答える