我正在执行如下查询,它适用于 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 中,有一个多键索引 on server_index
,如下所示:
{
"server_index.delete_time" : 1,
"server_index.server" : 1,
"server_index.index" : 1,
"server_index.path" : 1
}
这在 CosmosDB 中是否支持?
编辑:尝试使用 Robo 3T 静默添加此索引失败,没有任何错误消息。根本没有添加索引。好的!
(请不要问奇怪的数据库模式。这就像是有原因的,相信我,我也想把它全部烧掉并用其他东西代替......我愿意接受建议但是,对于替代查询)