标签: azure-cosmosdb

如何配置 Cosmos DB .NET 3.0 SDK 以使用驼峰式序列化?

我的 .NET POCO 在ProperCase. 我的 json 在camelCase. 如何配置 .NET SDK 的 3.0 版以在与 Cosmos DB 之间进行序列化/反序列化时进行转换?

我知道我可以将属性添加[JsonProperty(PropertyName = "myProperty")]到每个属性,但如何告诉 SDK 默认为所有属性执行此操作?

我试图避免为每个属性添加一个属性。

.net azure-cosmosdb

5
推荐指数
3
解决办法
3013
查看次数

.NET Azure Functions 中的依赖注入 - Azure Cosmos DB 客户端

我在 Microsoft Docs 上阅读了一篇关于在 .NET Azure Functions 中使用依赖项注入的文章。

一切正常,正如您在文章中看到的,它注册了 CosmosClient

builder.Services.AddSingleton((s) => {
     return new CosmosClient(Environment.GetEnvironmentVariable("COSMOSDB_CONNECTIONSTRING"));
    });
Run Code Online (Sandbox Code Playgroud)

问题是,如何在我的函数中使用 Cosmos Client?我不想每次都创建 Cosmos Client 实例。

public  class CosmosDbFunction
{
    public CosmosDbFunction()
    {

    }

    [FunctionName("CosmosDbFunction")]
    public  async Task<IActionResult> Run(
        [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
        ILogger log)
    {
        // TODO: do something later
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

dependency-injection azure azure-functions azure-cosmosdb

5
推荐指数
1
解决办法
1782
查看次数

我可以用 Cosmos DB 替换 Redis 缓存吗?

我可以使用azure cosmos db代替redis缓存进行服务器端缓存吗,我觉得cosmos db还提供键值存储,具有地理复制,读写访问和比redis缓存更低的延迟

redis azure-cosmosdb

5
推荐指数
2
解决办法
4758
查看次数

使用 ORDER BY 记录 DB SDK 导致 ServiceUnvailableException

我正在使用 DocumentDB。给定索引策略:

消息类型:字符串 - 精度 -1

设备编号 : 字符串 - 精度 -1

查询 1:

SELECT * FROM c WHERE c._ts >= 1563721200 AND c._ts < 1563807600 AND c.messageType = 'attack' AND c.deviceId >= 'A' AND c.deviceId < 'Z'
Run Code Online (Sandbox Code Playgroud)

查询 2:

SELECT * FROM c WHERE c._ts >= 1563721200 AND c._ts < 1563807600 AND c.messageType = 'attack' AND c.deviceId >= 'A' AND c.deviceId < 'Z' ORDER BY c._ts DESC
Run Code Online (Sandbox Code Playgroud)

执行代码:

var query = dbClientSource.CreateDocumentQuery<Document(UriFactory.CreateDocumentCollectionUri(db, collection),
             sql,
             new FeedOptions { MaxItemCount …
Run Code Online (Sandbox Code Playgroud)

database indexing azure-sdk-.net azure-cosmosdb

5
推荐指数
1
解决办法
244
查看次数

模拟 GetItemLinqQueryable 和扩展方法 ToFeedIterator()

我们正在使用 Azure Cosmos 客户端 V3。为了获取数据,我们使用 GetItemLinqQueryable 和 ToFeedIterator 使其异步。它运行良好,但是在模拟/单元测试时,我们遇到了与 ToFeedIterator 相关的错误

代码:

IOrderedQueryable<T> linqQueryable = _container.GetItemLinqQueryable<T>(requestOptions: requestOptions);
var feedIterator = linqQueryable.Where(predicate).ToFeedIterator();
Run Code Online (Sandbox Code Playgroud)

对于模拟 UnitTestCode 代码:

var _mockResponse = new Mock<ItemResponse<Test>>();
mockContainer.Setup(x => x.GetItemLinqQueryable<Test>(It.IsAny<bool>(), It.IsAny<string>(), It.IsAny<QueryRequestOptions>())).Returns(queryable);
Run Code Online (Sandbox Code Playgroud)

它确实从 GetItemLinqQueryable 返回 1 条记录,但是 ToFeedIterator() 失败说System.ArgumentOutOfRangeException: 'ToFeedIterator is only supported on cosmos LINQ query operations Parameter name: linqQuery'

c# moq azure-cosmosdb

5
推荐指数
1
解决办法
1393
查看次数

无法连接到 Cosmos db 模拟器 Mongo API 3.6

在使用以下命令执行启动后,我能够使用 python 和 Robo 3T 连接到标准的 MongoAPI 3.2 版本:

CosmosDb.Emulator.exe /EnableMongoDbEndpoint

但是,当启动模拟器时:

CosmosDb.Emulator.exe /EnableMongoDbEndpoint=3.6

我无法再与 python 连接,只能与 Robo 3T 连接。我曾尝试添加一个 mongoport 参数并使用 pymongo 引用生成的证书,但无济于事

import pymongo

from pymongo.errors import ConnectionFailure

uri = 'mongodb://localhost:C2y6yDjf5%2FR%2Bob0N8A7Cgv30VRDJIWEHLM%2B4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw%2FJw%3D%3D@localhost:10255/admin?ssl=true&ssl_cert_reqs=CERT_NONE&retrywrites=false'
try:
    # The is master command is cheap and does not require auth.
    client = pymongo.MongoClient(uri)
    print(client.admin.command('ismaster'))
except ConnectionFailure:
    print("Server not available")
Run Code Online (Sandbox Code Playgroud)

python pymongo azure-emulator azure-cosmosdb azure-cosmosdb-mongoapi

5
推荐指数
0
解决办法
201
查看次数

Cosmos DB 和 DevOps 自动化

最近我遇到了一个场景,我需要在我的 CosmosDB 数据库上执行某种 DDL 和 DML 迁移(我知道这些首字母缩写词不适用于 NoSQL,但无论如何)。这些迁移计划在 CI/CD 管道中自动化和执行。

显然,很难在网上找到有关我想要实现的功能的任何信息。以下是一些标准:

  • 将静态数据存储在源代码存储库中。查看。可以使用一些 powershell 部署到数据库
  • 在源代码存储库中有 javascript 存储过程。查看。再来点powershell
  • 修改一些数据以反映应用层的变化。例如,在集合范围内或选定记录上添加一些具有默认值或特定值的字段。- 不检查。目前找不到可接受的解决方案。

我对最后一点感到非常沮丧,并试图避免创建将使用 SDK 应用 DML 更改的应用程序。在 .net 世界中,AFAIK EntityFramework 不支持 CosmosDB 中的自动迁移。

所以一个好的社区的问题是:有没有什么被认为是自动化 Cosmos DB 数据修改的好做法?

我上面所说的是否有意义,还是像处理 RDBMS 一样处理 NoSQL DBMS 的另一种尝试?

.net powershell devops azure-cosmosdb

5
推荐指数
1
解决办法
409
查看次数

Cosmos DB DocumentClient 的 DateTime 处理中的错误

这个问题与DocumentClientfrom Microsoft.Azure.DocumentDB.Core v2.11.2. (更新:该错误也存在于Microsoft.Azure.Cosmos.)

当查询包含DateTime带有尾随零的值时,Cosmos DB 的 LINQ 提供程序中似乎存在错误。考虑以下代码:

string dateTimeWithTrailingZero = "2000-01-01T00:00:00.1234560Z"; // trailing zero will be truncated by LINQ provider :-(
DateTime datetime = DateTime.Parse(dateTimeWithTrailingZero, CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal);

IQueryable<Dictionary<string, object>> query =
    client.CreateDocumentQuery<Dictionary<string, object>>(collectionUri)
        .Where(x => (DateTime) x["datetime"] <= datetime);
Run Code Online (Sandbox Code Playgroud)

结果query 包括属性所在的文档,datetime例如"2000-01-01T00:00:00.1234567Z"(即使它不应该)。

结果query没有包含文件,其中datetime"2000-01-01T00:00:00.1234560Z"(即使它应该)。

有什么方法可以使用DocumentClientLINQ 来DateTime正确查询属性吗?(我知道使用原始 SQL 是有效的 - 由于各种原因,我必须 …

c# azure-cosmosdb azure-cosmosdb-sqlapi

5
推荐指数
1
解决办法
416
查看次数

Azure Cosmos DB - 使用附加字段更新现有文档

现有的 Cosmos DB 文档需要使用新属性进行更改/更新,其他集合的现有文档也需要使用相同的新属性及其值进行更新。

是否有任何推荐的方法或工具可用于更新 Cosmos DB 上的现有文档,或者使用 Cosmos DB SDK 编写自定义 c# 应用程序/PowerShell 脚本是唯一的选择?

例子:

现有user文件

{
   id:user1@mail.com,
   name: "abc",
   country: "xyz"
}  
Run Code Online (Sandbox Code Playgroud)

更新user文档

{
   id:user1@mail.com,
   name: "abc",
   country: "xyz",
   guid:"4334fdfsfewr"  //new field
} 
Run Code Online (Sandbox Code Playgroud)

现有order文件user

{
   id:user1@mail.com,
   user: "user1@mail.com",
   date: "09/28/2020",
   amt: "$45"
}  
Run Code Online (Sandbox Code Playgroud)

更新的order文件user

{
   id:user1@mail.com,
   user: "user1@mail.com",
   userid: "4334fdfsfewr",  // new field but with same value as in user model
   date: "09/28/2020",
   amt: "$45"
}  
Run Code Online (Sandbox Code Playgroud)

azure azure-cosmosdb

5
推荐指数
1
解决办法
1695
查看次数

无服务器帐户不支持在容器上设置优惠吞吐量或自动驾驶仪。Azure Cosmos DB 迁移工具

在迁移工具中选择所有正确的详细信息后,会返回与错误相关的吞吐量值,并且 0 或 -1 没有帮助。

azure-cosmosdb

5
推荐指数
1
解决办法
2648
查看次数