【问题标题】:How do you perform queries without specifying shard key in mongodbapi and how do you query across partitions?如何在 mongodbapi 中不指定分片键的情况下执行查询以及如何跨分区查询?
【发布时间】:2018-07-24 17:23:48
【问题描述】:

mongodb api不指定分片键的情况下如何执行查询以及如何跨分区查询?

在 sql api 中,通过在请求中将 EnableCrossPartitionQuery 设置为 true 来启用后者,但我无法为 mongodb api 找到类似的东西。我在 unsharded 集合上工作的查询现在失败(指定分片键的查询按预期工作)。

无论我使用AsQueryable 扩展语法还是聚合框架,查询都会不加选择地失败。

【问题讨论】:

    标签: azure azure-cosmosdb azure-cosmosdb-mongoapi


    【解决方案1】:

    据我所知,在 CosmosDB Mongo API 中没有类似于 EnableCrossPartitionQuery 的此类属性。事实上,CosmosDB 是一个独立的服务器实现,不直接与 MongoDB 服务器版本和功能保持一致。

    CosmosDB 支持 MongoDB API 的子集,并将请求转换为 CosmosDB SQL 等效项。 CosmosDB 有一些不同的行为和结果,特别是与 MongoDB 的分片相比,它们的分区实现。但是 CosmosDB 有责任改进他们对 MongoDB 的仿真。

    当然,如果您想要完整的 MongoDB 功能支持,您可以添加反馈 here 以获得官方帮助或考虑在 Azure 上使用 MongoDB Atlas

    希望对你有帮助。

    【讨论】:

    • 谢谢,我们有意识地选择了 Azure 上的 MongoDb 而不是 Atlas,因为 Cosmos 结合了两全其美(自动索引是其中之一,但也许最重要的是大规模廉价可扩展性)。 Cosmos 在有希望的事情上走得很远;行星规模、多 api 等,它几乎在它的 azure 文档的每一页上。它还拥有“与现有的 MongoDB 库、驱动程序、工具和应用程序兼容”。我们认为,为了同时实现多 API 和全球规模,所有 API 都应该支持超过 20GB 并且可以在多个实例(分片)上运行的集合。
    • 我们已联系 azure 支持,支持工程师同意这不是可选功能。他们已将问题上报给产品团队,我将继续在此线程上发帖,直到问题得到解决(适用于在我之后来到这里的任何人)。
    • @Kdog 好的,等待您与此问题相关的任何进展。
    • @Kdog 嗨,Kdog。如果您有任何更新,可以在这里发布,我会将它们设置为我的答案供其他人参考,以便您标记答案。谢谢。跨度>
    【解决方案2】:

    产品组团队已确认存在错误!将在 9 月的前两周修复,以防有人同时遇到同样的问题。

    【讨论】:

      猜你喜欢
      • 2020-02-11
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2020-06-23
      • 2018-06-27
      • 1970-01-01
      • 2017-08-03
      相关资源
      最近更新 更多