-1

我正在构建一个 MERN 堆栈应用程序,该应用程序在后端有一个 CosmosDB 数据库,其集合的结构类似于以下内容:

{ 
    "_id" : ObjectId("5c22dd1d58e77e47ac6361ae"), 
    "company" : "Company 1", 
    "feature" : "Feature 1", 
    "date" : "2018-10-04"
}
{ 
    "_id" : ObjectId("5c22ddcb58e77e47ac6361af"), 
    "company" : "Company 2", 
    "feature" : "Feature 1", 
    "date" : "2018-03-12"
}
{ 
    "_id" : ObjectId("5c22ddfc58e77e47ac6361b0"), 
    "company" : "Company 2", 
    "feature" : "Feature 2", 
    "date" : "2018-11-13"
}

我需要 API 来提供所有具有列出功能的“公司”的列表。通常,如果这是一个 SQL 数据库,它会是SELECT DISTINCT company FROM features,但是当我尝试执行查询db.getCollection("features").distinct("company")时,我得到:

[js] Error: distinct failed: {
"_t" : "OKMongoResponse",
"ok" : 0,
"code" : 115,
"errmsg" : "Command is not supported",
"$err" : "Command is not supported"
}

在进行一些研究时,似乎 CosmosDB 最初发布时没有执行 DISTINCT 的能力,但在今年早些时候被添加。这是否有失败的原因,或者是否有不同的方式可以获得查询结果,或者我是否需要提取所有数据然后在我的程序逻辑中对其进行重复数据删除?

4

1 回答 1

0

根据Use Azure Cosmos DB's API for MongoDB support for MongoDB features and syntax > Aggregation pipelinedistinct它是聚合管道的一部分,仅在公共预览版中受支持。

请参阅Azure #CosmosDB 扩展对 MongoDB 聚合管道、唯一索引等的支持,了解如何加入公共预览版。

希望能帮助到你!

于 2018-12-31T08:20:25.303 回答