2017-07-07 81 views
0

我已經實現了一個C#應用程序,在該應用程序中我運行一個集合並向某些文檔添加屬性。爲了添加屬性,我使用了ReplaceDocumentAsync方法,但對於某些文檔,我得到一個「Resource Not Found」異常,並且異常類型爲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是集合的分區鍵。 –