Отличается в CosmosDB через API MongoDB
Я создаю приложение 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 ответ
Согласно Использовать API Azure Cosmos DB для MongoDB, поддержка функций и синтаксиса MongoDB> Агрегационный конвейер, distinct
, который является частью конвейера агрегации, поддерживается только в открытом предварительном просмотре.
См. Azure #CosmosDB расширяет поддержку конвейера агрегации MongoDB, уникальных индексов и многое другое о том, как подключиться к общедоступному предварительному просмотру.
Надеюсь, поможет!