CosmosDB mongoDB API 排序和全文搜索抛出错误

Posted

技术标签:

【中文标题】CosmosDB mongoDB API 排序和全文搜索抛出错误【英文标题】:CosmosDB mongoDB API sort and full text search throwing error 【发布时间】:2021-09-25 19:45:45 【问题描述】:

我正在使用 CosmosDB MongoDB API 来存储和检索集合中的文档。

我正在尝试使用排序 collection.find().sort(field1: 1 并看到此错误:

"message": "Failed to retrieve the document:MongoError: Error=2, Details='Response status code does not indicate success: 
BadRequest (400); Substatus: 0; ActivityId: d05b7772-3252-4005-898f-4480cadfb8e1; Reason: 
(Response status code does not indicate success: BadRequest (400); Substatus: 0; ActivityId: 
d05b7772-3252-4005-898f-4480cadfb8e1; Reason: (Response status code does not indicate success: BadRequest (400); 
Substatus: 0; ActivityId: d05b7772-3252-4005-898f-4480cadfb8e1; Reason: (Message: \"Errors\":
[\"The index path corresponding to the specified order-by item is excluded.\"]\r\nActivityId: d05b7772-3252-4005-898f-4480cadfb8e1, 
Request URI: /apps/e118124c-80f3-408e-a2f9-fbea51664ad4/services/5cb63213-f046-49d6-9825-0bfa4010772e/partitions
/68271031-2d85-44cd-9929-8857ff69b63e/replicas/132696733163313635s/, 
RequestStats: Microsoft.Azure.Cosmos.Tracing.TraceData.ClientSideRequestStatisticsTraceDatum, 
SDK: Windows/10.0.17763 cosmos-netstandard-sdk/3.18.0);););"

是不是说没有索引就不能在MongoDB上做排序?

想知道这是 MongoDB 行为还是 CosmosDB 行为?不确定。

第二个问题是:我想对所有字段进行字符串搜索,如下所示:

 collection.find("$text":"$search":"findMeOut");

但是在这里我看到了这个 Mongo 错误:

MongoError: $text not supported

现在这意味着什么?

我正在使用 CosmosDB MongoDB API,使用 javascript 和 NodeJs 本机 MongoClient,版本如下:

 "mongodb": "^3.6.10",
 "fastify-mongodb": "^2.0.1",

谢谢。

【问题讨论】:

这个问题的解决方法是什么? 【参考方案1】:

分享你的模型真的很有帮助。 AFAIK,为了使用文本搜索,您必须使用索引名称 text 对要执行搜索的字段进行索引。你可以看看this issue,我相信这与你的问题相似

【讨论】:

以上是关于CosmosDB mongoDB API 排序和全文搜索抛出错误的主要内容,如果未能解决你的问题,请参考以下文章

使用 MongoDB API 无法使用 Prisma 和 CosmosDB 进行更新

用于 MongoDB API 的分片密钥和 Azure CosmosDB

CosmosDB MongoDB API:新查询被隐藏

Azure CosmosDB (11) MongoDB概念

将Cosmos DB模拟器(MongoDB API)迁移到Azure时发生致命错误

CosmosDB - Mongodb IsUpsert 不适用于批量更新