2017-07-07 8 views
0

コレクションを実行して一部のドキュメントにプロパティを追加するC#アプリケーションを実装しました。プロパティを追加するには、ReplaceDocumentAsyncメソッドを使用しますが、一部のドキュメントでは例外タイプDocumentClientExceptionで「リソースが見つかりません」という例外が発生します。前のクエリの文書を見つけたので、なぜですか?文書を置き換えるときに「リソースが見つかりません」例外が発生する

IQueryable<AISObject> aisQuery = this.client.CreateDocumentQuery<AISObject>(
    UriFactory.CreateDocumentCollectionUri(DatabaseId, AISCollectionId), 
    new SqlQuerySpec() 
    { 
     QueryText = "SELECT * FROM " + AISCollectionId + " a WHERE ST_WITHIN(a.Location, { 'type':'Polygon', 'coordinates': " + coordinates + " })", 
    }, new FeedOptions { MaxItemCount = -1, EnableCrossPartitionQuery = true, MaxDegreeOfParallelism = -1, MaxBufferedItemCount = -1 }); 
foreach (AISObject aisObject in aisQuery.ToList()) 
{ 
    aisObject.MapID = mapID; 
    await this.client.ReplaceDocumentAsync(UriFactory.CreateDocumentUri(DatabaseId, AISCollectionId, aisObject.id), aisObject, 
     new RequestOptions { PartitionKey = new PartitionKey(aisObject.TransmitterMMSI) }); 
} 

Lazy indexingModeを使用してパーティション化されたコレクションです。

答えて

0

PartitionKeyは本当にありますか?

クロスパーティションクエリでドキュメントが見つかりました。おそらく、PartitionKeyが正しいものではありません。

一貫してResourceNotFoundを取得していますか?もしそうなら、これは事実かもしれません。

+0

ReplaceDocumentAsync呼び出しで不適切なパーティションキーを使用している可能性がありますか?いいえ、TransmitterMMSIはコレクションのパーティションキーです。 –

関連する問題