3

既存のドキュメントにプロパティを追加したい(http://ravendb.net/docs/client-api/partial-document-updatesからの手がかりを使用)。しかし、追加する前に、そのプロパティがデータベースにすでに存在するかどうかを確認したいと思います。

それを達成するための「特別で適切なravendBの方法」はありますか?
または、ドキュメントをロードして、このプロパティがnullかどうかを確認しますか?

4

1 に答える 1

0

これは、セットベースのデータベース更新を使用して行うことができます。JavaScript を使用して実行します。幸いなことに、JavaScript は C# とよく似ているため、誰にとっても非常に簡単なプロセスになります。これは、私が実行したばかりの更新の例です。

:スクリプト内のエラーによって望ましくない結果が生じる可能性があるため、これを行うには細心の注意を払う必要があります。たとえば、私のコードでは CustomId に「1234-1」のようなものが含まれています。スクリプトを書く最初の反復では、次のことがありました。

product.Order = parseInt(product.CustomId.split('-'));

分割後にインデクサーを忘れたことに注意してください。結果?エラーですよね?いいえ。注文の値は 12341 でした! 1 のはずです。そのため、注意して、十分にテストしてください。

例:

Job には Products プロパティ (コレクション) があり、既存の Products に新しい Order プロパティを追加しています。

ravenSession.Advanced.DocumentStore.DatabaseCommands.UpdateByIndex(
    "Raven/DocumentsByEntityName",
    new IndexQuery { Query = "Tag:Jobs" },
    new ScriptedPatchRequest { Script =
        @"
        this.Products.Map(function(product) {   
            if(product.Order == undefined)
            {
                product.Order = parseInt(product.CustomId.split('-')[1]);
            }
            return product;
        });"
    }
);

これらのページを参照してビルドしました。

セットベースの操作

ドキュメントの部分的な更新 (特にマップセクション)

于 2013-10-16T18:51:50.353 に答える