当前位置: 首页 > 知识库问答 >
问题:

Cosmos DB findOneAndUpdate:对多个参数排序失败,出现意外错误

王修为
2023-03-14
    < li >我已经设置了一个Azure Cosmos DB,它公开了MongoDB API。 < li >我使用mongo shell连接到数据库。 < li >我用< code >使用html" target="_blank">示例创建了一个新的db 示例。 < li >我使用< code > db . sample . insert({ }) 创建了一个简单的集合< code>sample < li >然后,我尝试运行以下查询:
db.sample.findOneAndUpdate({ foo: {"$eq":1}},{ "$set": { "bar":1}},{"sort": { "foo": 1, "bar": 1 }})

当我对一个普通的MongoDB 3.2.0实例运行时,查询成功完成(匹配0个结果)。但是,在CosmosDB上,会生成以下stacktrace:

2019-01-31T13:46:49.740+0100 E QUERY    [thread1] Error: findAndModifyFailed failed: {
    "_t" : "OKMongoResponse",
    "ok" : 0,
    "code" : 2,
    "errmsg" : "Message: {\"Errors\":[\"Encountered exception while executing function. Exception = Error: {\\\"Errors\\\":[\\\"The order by query does not have a corresponding composite index that it can be served from.\\\"]}\\r\\nStack trace: Error: {\\\"Errors\\\":[\\\"The order by query does not have a corresponding composite index that it can be served from.\\\"]}\\n   at queryCallback (__.sys.commonUpdate_BsonSchema.js:3835:26)\\n   at Anonymous function (__.sys.commonUpdate_BsonSchema.js:607:29)\"]}\r\nActivityId: ff7b4476-0000-0000-0000-000000000000, Request URI: /apps/c2de8f1c-dee1-4b6c-8543-479a695c3bb2/services/12da6069-653a-45be-bfa1-4394a0798877/partitions/2814e64e-3d06-4705-a346-cbbfc822a49a/replicas/131934057017796979p/, RequestStats: \r\nRequestStartTime: 2019-01-31T12:46:49.6846466Z, Number of regions attempted: 1\r\n, SDK: Microsoft.Azure.Documents.Common/2.1.0.0",
    "$err" : "Message: {\"Errors\":[\"Encountered exception while executing function. Exception = Error: {\\\"Errors\\\":[\\\"The order by query does not have a corresponding composite index that it can be served from.\\\"]}\\r\\nStack trace: Error: {\\\"Errors\\\":[\\\"The order by query does not have a corresponding composite index that it can be served from.\\\"]}\\n   at queryCallback (__.sys.commonUpdate_BsonSchema.js:3835:26)\\n   at Anonymous function (__.sys.commonUpdate_BsonSchema.js:607:29)\"]}\r\nActivityId: ff7b4476-0000-0000-0000-000000000000, Request URI: /apps/c2de8f1c-dee1-4b6c-8543-479a695c3bb2/services/12da6069-653a-45be-bfa1-4394a0798877/partitions/2814e64e-3d06-4705-a346-cbbfc822a49a/replicas/131934057017796979p/, RequestStats: \r\nRequestStartTime: 2019-01-31T12:46:49.6846466Z, Number of regions attempted: 1\r\n, SDK: Microsoft.Azure.Documents.Common/2.1.0.0"
} :
_getErrorWithCode@src/mongo/shell/utils.js:25:13
DBCollection.prototype.findAndModify@src/mongo/shell/collection.js:757:1
DBCollection.prototype.findOneAndUpdate@src/mongo/shell/crud_api.js:785:12
@(shell):1:1

CosmosDB中是否存在一些普通MongoDB实例中不存在的额外查询限制?这只是CosmosDB的bug吗?报告这类错误的恰当方式是什么?

共有1个答案

朱鹏
2023-03-14

你没有看到虫子;目前,Cosmos DB的MongoDB API不支持复合索引。您的<code>findOneAndUpdate()的情况下查找,或者使用单个属性<code>sort。

注意:这里发布了一个用户声音请求,您可以对其进行投票,该请求包含来自产品团队的状态更新;这可能对你有帮助。

 类似资料:
  • 这是一个按升序排列句子中每个单词的程序。 这段代码对我来说似乎很完美,但是当我打印东西时,它显示了这个输出。 我真的不知道为什么会这样。 请帮忙。同时请提供一个替代方案。 我希望输出为

  • 从多个github讨论中,我发现这是一个windows网络错误。 这个问题有解决办法吗?我应该降级docker版本还是安装其他东西。 我正在使用windows容器。运行docker版本客户端:版本:17.06.0-CE API版本:1.30 Go版本:Go1.8.3 Git提交:02C1D87构建:周五6月23日21:30:30 2017 OS/arch:Windows/amd64 如何解决lin

  • 当我尝试重建project时,android studio给出了错误:

  • 首先,我是Android的新手,我已经将一个eclipse项目导入到Android Studio。在building project中显示此错误 “错误:任务”:app:ProcessDebugManifest“执行失败。>清单合并失败,出现多个错误,请参阅日志” 我已经尝试了这里提供的其他解决堆栈溢出的方法,但没有一个奏效

  • 当我构建应用程序时,出现错误 RuntimeException:清单合并失败,出现多个错误 下面是我的构建。gradle(project:appname): 我的舱单:

  • 问题内容: 验证失败后,为什么从Hibernate收到UnsupportedOperationException?我希望有一个ConstraintViolationException。 以下是我的DAO。通过验证后即可正常工作。我正在使用Hibernate和Hibernate Validator4。我正在使用Websphere 8.0。我认为WebSphereExtendedJtaPlatform