2017-11-20 1 views
1

파티션 키가 "flightConversationId"인 콜렉션이 있습니다. nodeJS SDK를 통해이 쿼리를 수행 할 때 PARTITON 키 필드Cosmos DB는 같은 쿼리에서 무작위로 성공하고 실패합니다. 교차하지 않는 파티션이라고 말하면

SELECT * from root WHERE root.flightConversationId="b36d13c0-cbec-11e7-a4ad-8fcedf370f98"

BY 내가 아주 간단한 쿼리를하고있는 중이 야

, 그것은 1 초를 작동하고, 오류가있는 다음을 실패합니다

Cross partition query is required but disabled. Please set x-ms-documentdb-query-enablecrosspartition to true, specify x-ms-documentdb-partitionkey, or revise your query to avoid this exception.

은 내가 크로스 파티션 쿼리를 가능하게 할 수 실현,하지만 난 크로스 파티션 쿼리가 필요하지 않습니다. 무슨 일 이니?

답변

0

.

내 이론은 컬렉션을 삭제하고 새 파티션 키를 사용하여 다시 만들 때 원본 컬렉션의 모든 잔여 항목이 실제로 클라우드에서 삭제되고 오랜 시간이 걸려 일부 요청이 "new"와 같은 이름을 가진 "old"컬렉션.

-1

FeedOptions 또는 RequestOptions 클래스에 partitionKey 속성을 지정하여 명시 적으로 쿼리를 파티션에 적용해야합니다. Where 절에서 PartitionKey를 사용하면 명시 적 범위가 없으면 충분하지 않습니다. 이것은 C#을위한 그러나 동일 개체 모델이어야한다 :

https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-partition-data

Document result = await client.ReadDocumentAsync(
    UriFactory.CreateDocumentUri("db", "coll", "XMS-001-FE24C"), 
    new RequestOptions { PartitionKey = new PartitionKey("XMS-0001") }); 

jsDoc :이 상황은 시간이 지남에 따라 자체적으로 해결 듯

http://azure.github.io/azure-documentdb-node/global.html#RequestOptions http://azure.github.io/azure-documentdb-node/global.html#FeedOptions

+0

나는 두 가지 이유로 당신이 옳다고 생각하지 않습니다. 쿼리가 변경되지 않고 가끔씩 작동합니다. 문서에서 파티션 키가 쿼리 자체 일 때 제공 할 필요가 없습니다. 자세한 내용은 https://docs.microsoft.com/en-us/azure/cosmos-db/documentdb-partition-data의 "파티션 된 컨테이너 쿼리"를 참조하십시오. 두 번째 링크는 파티션간에 쿼리 할 때만 키를 제공하면된다는 것을 나타냅니다 난 아니다). 또한 "파티션 된 컨테이너의 데이터를 쿼리 할 때 CDB는 쿼리를 필터에 지정된 파티션 키 값에 해당하는 파티션으로 자동 라우팅합니다." –

+1

x-ms-documentdb-query-enablecrosspartition \t 선택 사항입니다. 단일 파티션 키에 대해 필터하지 않는 쿼리의 경우 true로 설정해야합니다. 단일 파티션 키 값에 대해 필터하는 쿼리는 true로 설정된 경우에도 단일 파티션에 대해서만 실행됩니다. https://docs.microsoft.com/en-us/rest/api/documentdb/querying-documentdb-resources-using-the-rest-api –

+0

그리고 이것이 사실이라면 왜 "또는 귀하의 검색어를 이 예외를 피하십시오 "? –

관련 문제