在不启用跨分区查询的情况下查询cosmos db

时间:2019-10-15 00:57:50

标签: azure-cosmosdb

查询cosmos db时,可以选择将enableCrossPartitionQuery设置为true。 我想知道如果不设置会发生什么?该查询将使用哪个分区?

谢谢

1 个答案:

答案 0 :(得分:1)

如果集合是分区的,则查询,更新,删除项需要分区键设置。

如果您未设置,则可能会看到以下错误:

enter image description here

在这种情况下,如果您不想设置任何分区键或不知道行数据属于哪个分区,则可以设置enableCrossPartitionQuery= true以避免错误。如果设置enableCrossPartitionQuery= true,则表示此请求将扫描所有分区以过滤数据。当然,它的查询性能肯定会下降。

顺便说一句,如果您的数据量很小,我认为影响可能很小。但是,如果数据量很大,建议您尽量避免设置此属性。


我测试了示例项目https://github.com/Azure-Samples/azure-cosmos-db-sql-api-nodejs-getting-started.git,并且在对容器进行分区时确实不需要分区键。

但是,基于cosmos db rest api中的语句:

enter image description here

我测试了Java sdk,并且在查询分区容器时需要分区键。无论如何,我想说的是,如果遇到指示缺少分区键的错误,则可以尝试添加属性enableCrossPartitionQuery = true来解决。通常,我仍然建议您为查询性能提供分区键。