Получение «запроса в команде должно быть направлено на один осколок» - PullRequest
0 голосов
/ 01 мая 2018

У меня есть настройка CosmosDB с использованием Mongo API. У меня есть коллекция с хешированным осколком на одном из полей документа. Когда я запускаю такие команды, как 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."}

Я не уверен, как я могу упомянуть ключ сегмента как часть запроса, учитывая, что я хочу, чтобы запрос выполнялся по всем сегментам.

Ответы [ 2 ]

0 голосов
/ 31 июля 2019

Это должен быть ShardKey, который вы выбрали при создании коллекции cosmosDb.

FilterDefinition filter = Builders.Filter.Eq ("id", 2); === 2 - это мой sharedKey await this._dbContext.GetProducts.DeleteOneAsync (фильтр); return RedirectToAction ("Index");

Пожалуйста, ознакомьтесь с изображением ниже, как оно выглядит в CosmosDB

enter image description here

0 голосов
/ 02 мая 2018

Вам необходимо предоставить ключ шарда, если вы хотите запускать такие команды, как db.collection.remove или db.collection.deleteMany.

Например:

Мой источник данных, как показано ниже:

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

И мой общий ключ - "/name". Используйте db.coll.deleteMany({"name":"a"}) для удаления определенного шарда.

enter image description here

Надеюсь, это поможет вам.

...