You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MongoDB分片:如何让sh.status()中partitioned显示为true?

解决MongoDB分片数据库partitioned字段显示true的问题
  • 核心逻辑:数据库的partitioned字段显示true的唯一条件是:该数据库下至少有一个集合已被成功分片,无法直接设置数据库的这个属性。

  • 纠正分片集合的命令:你之前执行的sh.shardCollection("db.coll", partitioned:true)是错误语法,正确的分片集合命令需要指定分片键(你要基于datetime分片,就把datetime作为分片键):

    sh.shardCollection("db.coll", { "datetime": 1 })
    

    执行成功后,该集合会被标记为分片集合,对应的数据库在sh.status()中的partitioned字段就会自动变为true。

  • 结合Tags和Zone-Ranges的后续配置:如果已经成功分片集合,后续配置zone和tag的步骤如下(供参考):

    1. 给分片节点添加标签:
      sh.addShardTag("shard0000", "old-data-zone")
      sh.addShardTag("shard0001", "new-data-zone")
      
    2. 为集合定义zone范围(基于datetime字段):
      sh.updateZoneKeyRange(
        "db.coll",
        { "datetime": ISODate("2023-01-01T00:00:00Z") },
        { "datetime": ISODate("2024-01-01T00:00:00Z") },
        "old-data-zone"
      )
      sh.updateZoneKeyRange(
        "db.coll",
        { "datetime": ISODate("2024-01-01T00:00:00Z") },
        { "datetime": MaxKey },
        "new-data-zone"
      )
      
  • 验证结果:执行完分片集合的命令后,重新运行sh.status(),检查对应数据库的partitioned字段,应该已经变为true。

内容的提问来源于stack exchange,提问作者Reyhane.K

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 13:31:02