使用 $elemMatch 和 $in 时不支持 Azure CosmosDB 操作
Azure CosmosDB operation not supported when using $elemMatch and $in
我正在执行如下查询,它在 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"
}
特别奇怪的是,查询貌似成功了,上面的响应是由一个"valid"游标作为第一个文档返回的,这导致我的文档解析器"crash".
我正在使用 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 添加此索引无提示失败,没有任何错误消息。根本没有添加索引。不错!
(请不要问奇怪的数据库模式。这好像是有原因的,相信我,我也想把它全部烧掉并用其他东西代替......不过,我愿意接受有关替代查询的建议)
这可能是服务器端问题。一开始它似乎是错误的(错误状态作为查询结果的一部分返回),几周后它就消失了,我没有做任何更改。
我正在执行如下查询,它在 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"
}
特别奇怪的是,查询貌似成功了,上面的响应是由一个"valid"游标作为第一个文档返回的,这导致我的文档解析器"crash".
我正在使用 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 添加此索引无提示失败,没有任何错误消息。根本没有添加索引。不错!
(请不要问奇怪的数据库模式。这好像是有原因的,相信我,我也想把它全部烧掉并用其他东西代替......不过,我愿意接受有关替代查询的建议)
这可能是服务器端问题。一开始它似乎是错误的(错误状态作为查询结果的一部分返回),几周后它就消失了,我没有做任何更改。