Я выполняю следующий запрос, который отлично работает с MongoDB, но иногда не работает с CosmosDB. Мне он нужен для работы с обоими.
(XXX
является заполнителем для любого строкового значения. Все строки имеют уникальные значения, которые отредактированы для удобства чтения, и фактическое содержимое не должно иметь значения.)
{
server_index: {
$elemMatch: {
server: "XXX",
index: "XXX",
delete_time: { $exists: false },
path: {
$in: ["XXX", "XXX", "XXX" ]
}
}
}
}
Схема документа примерно такая:
{
...,
server_index: [
{
server: "XXX",
index: "XXX",
delete_time: ISODate(...), // optional
path: "XXX"
},
{...}, // same as above
...
],
...
}
Этот запрос иногда работает должным образом и с CosmosDB, но иногда я также получаю следующий ответ:
{
_t: "OKMongoResponse",
ok: 0,
code: 115,
errmsg: "Command is not supported",
$err: "Command is not supported"
}
Что особенно странно, так это то, что запрос, по-видимому, завершается успешно, а ответ, приведенный выше, возвращается «действительным» курсором в качестве первого документа, что затем вызывает «сбой» моего парсера документов.
Я использую устаревший драйвер C ++. Это вообще поддерживается Cosmos DB?
(По словам разработчика, от которого я унаследовал этот проект, это так, и, как всегда, когда вы наследуете проекты, все работало нормально, согласно предыдущему разработчику ... Так что это может быть связано с изменением в Cosmos DB из-за характера моих тестовых данных, или кто знает что ...)
Боковое примечание: в MongoDB есть многоключевой индекс для server_index
, который выглядит так:
{
"server_index.delete_time" : 1,
"server_index.server" : 1,
"server_index.index" : 1,
"server_index.path" : 1
}
Поддерживается ли это вообще в CosmosDB?
РЕДАКТИРОВАТЬ: Попытка добавить этот индекс с помощью Robo 3T молча терпит неудачу, без каких-либо сообщений об ошибке. Индекс просто не добавляется. Отлично!
(Пожалуйста, не спрашивайте о странной схеме базы данных. Это похоже на то, что на то есть причина, и поверьте мне, я тоже хотел бы все это сжечь и заменить чем-то другим ... Я открыт для предложений хотя для альтернативных запросов)