标签: azure-cosmosdb

没有JOIN,处理文档数据库中数据的正确方法是什么?

我知道JOIN在文档数据库中是不可能的或不赞成的.我来自关系数据库背景,并试图了解如何处理这种情况.

假设我有一个Employees集合,我存储了所有与员工相关的信息.以下是典型的员工文档:

{
   "id": 1234,
   "firstName": "John",
   "lastName": "Smith",
   "gender": "Male",
   "dateOfBirth": "3/21/1967",
   "emailAddresses":[
      { "email": "johnsmith@mydomain.com", "isPrimary": "true" },
      { "email": "jsmith@someotherdomain.com", "isPrimary": "false" }
   ]
}
Run Code Online (Sandbox Code Playgroud)

我们还说,我有一个单独的项目集合,我存储的项目数据看起来像这样:

{
   "id": 444,
   "projectName": "My Construction Project",
   "projectType": "Construction",
   "projectTeam":[
      { "_id": 2345, "position": "Engineer" },
      { "_id": 1234, "position": "Project Manager" }
   ]
}
Run Code Online (Sandbox Code Playgroud)

如果我想返回我的所有项目列表以及项目团队,我该如何处理以确保我返回有关团队中个人的所有相关信息,即全名,电子邮件地址等?

这是两个单独的查询吗?一个用于项目,另一个用于ID出现在项目集合中的人员?

如果是这样,我如何插入有关人员的数据,即全名,电子邮件地址?然后我在我的应用程序中执行foreach循环来更新数据吗?

如果我依赖我的应用程序来处理所有相关数据的填充,那么这不是一个性能损失会抵消MongoDB等文档数据库的性能优势吗?

谢谢你的帮助.

sql document mongodb mongodb-query azure-cosmosdb

6
推荐指数
1
解决办法
263
查看次数

为DocumentDb定制C#poco的序列化

是否可以更改documentDb的C#poco的默认序列化?例如,id-property似乎需要小写,但Id属性的默认序列化是大写.理想情况下,我们希望所有json属性都以小写字符开头.到目前为止我们找到的唯一方法是用[JsonProperty(PropertyName ="id")]装饰属性,但它不是很优雅.

azure-cosmosdb

6
推荐指数
2
解决办法
3738
查看次数

如何使用SELECT DISTINCT语句的等效方法查询Azure DocumentDB

DocumentDb不支持该DISTINCT语句.我在DocumentDB中有以下结构的文档(数千个文档):

{
    "type" : "type1",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
},{
    "type" : "type2",
    "data" : {
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

如何查询集合并获得以下结果:

{
    "type" : "type1"
},{
    "type" : "type2"
}
Run Code Online (Sandbox Code Playgroud)

json azure azure-cosmosdb

6
推荐指数
1
解决办法
5284
查看次数

在documentDb中动态创建查询

所以我整个上午搜索但找不到满意的答案

我正在尝试编写一个通用方法(服务),它将对象作为输入(可以是JObject或Document或动态),并在集合中查询对象中的属性.

示例 - 如果您发送{"name":"abc"},我将在任何文档中搜索name ="abc".如果你发送{"name":"abc","department":"xyz"},它会搜索这两个字段.

问题 - 该方法的最佳输入应该是什么?选项 - 1. public bool Exists(Document doc)//假设我已经有了Collection.Selflink这个类.我似乎无法迭代doc对象的属性.

  1. public bool Exists(JObject obj)我将不得不遍历obj并自己准备查询.

有没有更简单的方法来查看文档是否与集合中的任何文档匹配.我只对匹配文档中的字段感兴趣.

提前致谢!

.net c# azure azure-cosmosdb

6
推荐指数
1
解决办法
665
查看次数

如何跟踪documentdb Linq提供程序生成的查询?

如何在linq语句发送到服务器之前看到文档DB sql查询(在字符串中)?

_documentClient.CreateDocumentQuery<MyType>(
                        UriFactory.CreateDocumentCollectionUri(DatabaseName,
                            CollectionName)).Where(....).SelectMany(...)
Run Code Online (Sandbox Code Playgroud)

我想用它来追踪.

c# linq azure-cosmosdb

6
推荐指数
2
解决办法
964
查看次数

DocumentDb 模拟器不工作 - 服务不可用

我在使用 DocumentDB Emulator (v. 1.11.136.2 ) 时遇到了一些问题。我能够看到资源管理器(https://localhost:8081/_explorer/index.html),但我无法使用资源管理器和 SDK 创建任何 Database\Collection(我尝试使用该页面提供的示例代码和我自己的代码)。

我总是得到:

    {"readyState":4,"responseText":"{\"code\":\"ServiceUnavailable\",\"message\":\"Service is currently unavailable.\\r\\nActivityId: 9c9f56f8-91f9-4fad-b592-0c6bd5bbd300\"}","responseJSON":{"code":"ServiceUnavailable","message":"Service is currently unavailable.\r\nActivityId: 9c9f56f8-91f9-4fad-b592-0c6bd5bbd300"},
"status":503,
"statusText":"error"}
Run Code Online (Sandbox Code Playgroud)

我正在运行 Windows 10。我已经尝试重新启动 PC 并重新安装 SDK\Emulator。

azure azure-cosmosdb

6
推荐指数
1
解决办法
2629
查看次数

mongodb spring 连接一夜之间丢失

我正在使用带有 mongoAPI(spring 数据,mongoRepository)的 azure cosmosdb 每天早上,第一个从 mongo 获取数据的请求会导致异常:

后续请求无需执行任何操作即可成功。

知道是什么原因造成的吗?有没有办法让 spring 自动恢复连接而不会请求失败?

谢谢

例外:

org.springframework.data.mongodb.UncategorizedMongoDbException: Exception sending message; nested exception is com.mongodb.MongoSocketWriteException: Exception sending message
        at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:107)
        at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2135)
        at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1978)
        at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1784)
        at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:1767)
        at org.springframework.data.mongodb.core.MongoTemplate.find(MongoTemplate.java:641)
        at org.springframework.data.mongodb.repository.query.MongoQueryExecution$CollectionExecution.execute(MongoQueryExecution.java:79)
        at org.springframework.data.mongodb.repository.query.MongoQueryExecution$ResultProcessingExecution.execute(MongoQueryExecution.java:411)
        at org.springframework.data.mongodb.repository.query.AbstractMongoQuery.execute(AbstractMongoQuery.java:94)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.doInvoke(RepositoryFactorySupport.java:483)
        at org.springframework.data.repository.core.support.RepositoryFactorySupport$QueryExecutorMethodInterceptor.invoke(RepositoryFactorySupport.java:461)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:56)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:92)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.data.repository.core.support.SurroundingTransactionDetectorMethodInterceptor.invoke(SurroundingTransactionDetectorMethodInterceptor.java:57)
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:179)
        at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:213)
...
Caused by: com.mongodb.MongoSocketWriteException: Exception sending message
        at com.mongodb.connection.InternalStreamConnection.translateWriteException(InternalStreamConnection.java:465)
        at com.mongodb.connection.InternalStreamConnection.sendMessage(InternalStreamConnection.java:208)
        at com.mongodb.connection.UsageTrackingInternalConnection.sendMessage(UsageTrackingInternalConnection.java:90)
        at com.mongodb.connection.DefaultConnectionPool$PooledConnection.sendMessage(DefaultConnectionPool.java:429)
        at com.mongodb.connection.CommandProtocol.sendMessage(CommandProtocol.java:189) …
Run Code Online (Sandbox Code Playgroud)

azure mongodb spring-data-jpa azure-cosmosdb

6
推荐指数
1
解决办法
2591
查看次数

Azure SQL 成本与 DocumentDB/CosmosDB 成本的比较

有没有人比较过 Azure SQL 成本与 DocumentDB/CosmosDB 成本?我不清楚 Azure CosmosDB 成本中显示的 RU。例如,1 TB db 中的 1 个请求不能等于 1 GB db 中的 1 个请求。

azure-sql-database azure-cosmosdb

6
推荐指数
1
解决办法
8615
查看次数

如何在不知道分区键值的情况下从 Cosmos DB 中删除对象?

如果我没有分区键值,如何删除文档?

我有id文档和分区键的属性名称(在我的例子中:)type

我试过:

var docLink = UriFactory.CreateDocumentUri(databaseName, collectionName, documentId);
var resp = client.DeleteDocumentAsync(docLink).Result;
Run Code Online (Sandbox Code Playgroud)

有错误: PartitionKey value must be supplied for this operation.

示例文档:

{
   "id": "AB12CD", 
   "type": "Company", 
   "Address": "123 Test Street"
}
Run Code Online (Sandbox Code Playgroud)

我试图获取特定文档 ID 的分区键值

使用 C# 代码...

我试图通过它读取文档id,然后提取该type值,但出现错误:InvalidOperationException: PartitionKey value must be supplied for this operation.使用以下代码。

var response = client.ReadDocumentAsync(UriFactory.CreateDocumentUri(databaseName, collectionName, id)).Result;
Run Code Online (Sandbox Code Playgroud)

我还尝试了跨分区查询:

FeedOptions queryOptions = new FeedOptions { MaxItemCount = 10 };
queryOptions.EnableCrossPartitionQuery = true;
var queryString …
Run Code Online (Sandbox Code Playgroud)

c# azure-cosmosdb

6
推荐指数
2
解决办法
5669
查看次数

将 LINQ“计数”查询作为 IDocumentQuery 处理

围绕 CosmosDB .NET SDK,我发现了一个有趣的问题。我想对以下查询使用 SDK LINQ 支持:

SELECT VALUE COUNT(1) FROM c WHERE <predicate>
Run Code Online (Sandbox Code Playgroud)

好吧,在编写 LINQ 查询之后,我立即意识到可能无法处理诸如文档查询之类的查询。但是,由于文档查询允许您捕获查询指标并在结果页面之间解除阻塞线程,因此我非常喜欢它。这是代码:

client.CreateDocumentQuery<TEntity>.Where(<predicate>).Count()
Run Code Online (Sandbox Code Playgroud)

即使我知道 Count() 的结果类型不是 IQueryable,有没有办法将“计数”查询作为文档查询处理?

linq azure-cosmosdb

6
推荐指数
1
解决办法
452
查看次数