获取“命令中的查询必须针对单个分片”

Zab*_*abi 6 azure-cosmosdb azure-cosmosdb-mongoapi

我有一个使用Mongo API的CosmosDB安装程序。我在文档的某个字段上有一个带有散列碎片的集合。当我运行类似db.collection.remove或的命令时db.collection.deleteMany,出现以下错误。

Command deleteMany failed: query in command must target a single shard key.: {"message":"Command deleteMany failed: query in command must target a single shard key."}

考虑到我希望查询在所有分片上运行,我不确定如何在查询中提及分片键。

Jay*_*ong 1

当您想要运行db.collection.remove或 之类的命令时,您需要提供分片键db.collection.deleteMany

例如 :

我的数据来源如下:

[
    {
        "id" : "2",
        "name" : "b"
    },
    {
        "id" : "1",
        "name" : "a"
    }
]
Run Code Online (Sandbox Code Playgroud)

我的共享密钥是"/name". 用于db.coll.deleteMany({"name":"a"})删除特定分片。

在此输入图像描述

希望对您有帮助。

  • 如果我有另一个文档 {id:3,name:"a"} 并且我想根据 id 删除它,我是否需要查询参数 id(标识文档的那个)和 name(因为它是片键),对吗? (2认同)