提取文档时Cosmos DB内部错误

时间:2019-05-27 11:11:14

标签: azure azure-cosmosdb

尽管我知道其中包含数据,但使用Azure Cosmos DB Data Explorer没有显示任何值。使用我的Web应用程序时,我可以看到它插入了数据。我也可以通过从本地GUI查询db.files.stats().count来验证这一点。但是,在我尝试从数据库读取的UI的任何时候,它都中断了-似乎与我尝试使用的GUI中看到的问题相同。

查看Chrome中的“网络”标签,每当我尝试刷新结果集时,都可以看到失败的请求被发送到https://portal-prod-northeurope-mongo.portal-prod-northeurope.p.azurewebsites.net端点。 它返回的响应是

  

命令查找失败:处理此请求时发生未知服务器错误。

当我使用本地GUI查询数据库时遇到相同的错误,因此我认为它与Azure门户没有直接关系。 我试图删除并重新创建集合,但无济于事。 当我在Cosmos DB仿真器上本地运行所有这些程序时,它就可以正常工作。

集合的定义如下:

    az cosmosdb collection create --resource-group $resourceGroup `
                                  --name $dbService `
                                  --collection-name 'files' `
                                  --db-name $db `
                                  --partition-key-path '/p'

    az cosmosdb collection create --resource-group $resourceGroup `
                                  --name $dbService `
                                  --collection-name 'users' `
                                  --db-name $db

    az cosmosdb collection create --resource-group $resourceGroup `
                                  --name $dbService `
                                  --collection-name 'projects' `
                                  --db-name $db `
                                  --partition-key-path '/cb'

,下面是一个示例对象:

internal class File
{
    [JsonProperty(PropertyName = "id")]
    public Guid Id { get; set; }

    [JsonProperty(PropertyName = "of")]
    public string OriginalFilename { get; set; }

    [JsonProperty(PropertyName = "if")]
    public string InternalFilename { get; set; }

    [JsonProperty(PropertyName = "ua")]
    public DateTime UploadedAt { get; set; }

    [JsonProperty(PropertyName = "p")]
    public Guid ProjectId { get; set; }

    [JsonProperty(PropertyName = "su")]
    public string StorageUri { get; set; }

    [JsonProperty(PropertyName = "t")]
    public byte Type { get; set; }

    public override string ToString() => JsonConvert.SerializeObject(this);
}

2 个答案:

答案 0 :(得分:1)

这里是否涉及数据迁移...如何在Cosmos DB中创建数据?您能否提供一个Json文档示例,其中包含所有系统生成的属性。 数据浏览器问题往往存在于提供了预定义ID值但与Cosmos DB所需格式不匹配的已迁移数据中。

答案 1 :(得分:1)

根据评论,您遇到此问题的原因是因为您在Mongo API帐户上使用Cosmos DB SDK。 Portal和GUI都试图通过Mongo客户端使用数据,并且您的数据通过其他API保存。

Cosmos DB SDK使用 SQL API 保存文档。 Mongo API帐户旨在通过Mongo客户端/驱动程序使用和使用。

如果您的应用程序需要Mongo,请使用Mongo客户端/驱动程序存储文档,请不要使用Cosmos DB SDK。

如果您的应用程序不需要Mongo(因为您使用的是Cosmos DB SDK,那么听起来就不一样),请创建一个Core API(SQL)帐户。