Отличается в CosmosDB через API MongoDB - PullRequest
0 голосов
/ 30 декабря 2018

Я создаю приложение MERN-stack, в базе которого есть база данных CosmosDB с коллекцией со структурой, аналогичной приведенной ниже:

{ 
    "_id" : ObjectId("5c22dd1d58e77e47ac6361ae"), 
    "company" : "Company 1", 
    "feature" : "Feature 1", 
    "date" : "2018-10-04"
}
{ 
    "_id" : ObjectId("5c22ddcb58e77e47ac6361af"), 
    "company" : "Company 2", 
    "feature" : "Feature 1", 
    "date" : "2018-03-12"
}
{ 
    "_id" : ObjectId("5c22ddfc58e77e47ac6361b0"), 
    "company" : "Company 2", 
    "feature" : "Feature 2", 
    "date" : "2018-11-13"
}

Мне нужен API для обслуживания списка всех "компании, которые имеют перечисленные функции.Обычно, если бы это была база данных SQL, это было бы SELECT DISTINCT company FROM features, но когда я пытаюсь выполнить запрос db.getCollection("features").distinct("company"), я получаю:

[js] Error: distinct failed: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 115,
"errmsg" : "Command is not supported",
"$err" : "Command is not supported"
}

При проведении некоторых исследований оказывается, что первоначально CosmosDBпоставляется без возможности сделать DISTINCT, но был добавлен ранее в этом году.Есть ли причина, по которой это не удается, или есть другой способ получения результатов запроса, или мне нужно извлечь все данные и затем восстановить их в логике моей программы?

1 Ответ

0 голосов
/ 31 декабря 2018

Согласно Использование API Azure Cosmos DB для MongoDB, поддержка функций и синтаксиса MongoDB> Конвейер агрегации , distinct, являющийся частью конвейера агрегации, поддерживается только в открытом предварительном просмотре.

См. Azure #CosmosDB расширяет поддержку конвейера агрегации MongoDB, уникальных индексов и многое другое о том, как подключиться к общедоступному предварительному просмотру.

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

...