查询cosmos db时,可以选择将enableCrossPartitionQuery设置为true。 我想知道如果不设置会发生什么?该查询将使用哪个分区?
谢谢
答案 0 :(得分:1)
如果集合是分区的,则查询,更新,删除项需要分区键设置。
如果您未设置,则可能会看到以下错误:
在这种情况下,如果您不想设置任何分区键或不知道行数据属于哪个分区,则可以设置enableCrossPartitionQuery= true
以避免错误。如果设置enableCrossPartitionQuery= true
,则表示此请求将扫描所有分区以过滤数据。当然,它的查询性能肯定会下降。
顺便说一句,如果您的数据量很小,我认为影响可能很小。但是,如果数据量很大,建议您尽量避免设置此属性。
我测试了示例项目https://github.com/Azure-Samples/azure-cosmos-db-sql-api-nodejs-getting-started.git,并且在对容器进行分区时确实不需要分区键。
但是,基于cosmos db rest api中的语句:
我测试了Java sdk,并且在查询分区容器时需要分区键。无论如何,我想说的是,如果遇到指示缺少分区键的错误,则可以尝试添加属性enableCrossPartitionQuery = true
来解决。通常,我仍然建议您为查询性能提供分区键。