我正在做一个类似于以下的查询,它在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
...
],
...
}
这个查询有时也可以与cosmossdb一起工作,但有时我也会得到以下响应:
{
_t: "OKMongoResponse",
ok: 0,
code: 115,
errmsg: "Command is not supported",
$err: "Command is not supported"
}
特别奇怪的是,查询似乎成功了,上面的响应是由“有效”光标作为第一个文档返回的,这会导致我的文档解析器“崩溃”。
我正在使用C++遗留驱动程序。Cosmos数据库是否支持这一点?
(根据我从中继承这个项目的开发人员的说法,确实如此,而且像往常一样,当您继承项目时,根据前一个开发人员的说法,它工作得很好……所以这可能是由于宇宙数据库的变化,由于我的测试数据的性质,或者谁知道…)
旁注:在MongoDB中,在
server_index
,如下所示:
{
"server_index.delete_time" : 1,
"server_index.server" : 1,
"server_index.index" : 1,
"server_index.path" : 1
}
这在宇宙数据库中是否得到支持?
编辑:尝试用robo 3t添加此索引时会自动失败,不会出现任何错误消息。只是没有添加索引。好极了!
(请不要问奇怪的数据库模式。这就好像是有原因的,相信我,我也想把它全部烧掉,换成别的东西…不过,我愿意接受其他问题的建议)