Getting 'query in command must target a single shard'

Zabi picture Zabi · May 1, 2018 · Viewed 10.9k times · Source

I have a CosmosDB setup using the Mongo API. I have a collection with a hashed shard on one of the field of the document. When I run commands like db.collection.remove or db.collection.deleteMany I get the following error.

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."}

I'm not sure how can I mention a shard key as part of the query considering I want the query to run across all the shards.

Answer

Jay Gong picture Jay Gong · May 2, 2018

You need to provide shard key when you want to run commands like db.collection.remove or db.collection.deleteMany.

For example :

My data source as below:

[
    {
        "id" : "2",
        "name" : "b"
    },
    {
        "id" : "1",
        "name" : "a"
    }
]

And my shared key is "/name". Use db.coll.deleteMany({"name":"a"}) to delete specific shard.

enter image description here

Hope it helps you.