我有一个文档DB遵循以下粗糙的json结构:
{
id: 32,
Name: 'John',
Occupation:{
name: 'Programmer',
hours: 40
}
}
有没有办法让一个单独的文件集或类似职业可以涉及的东西?如:
{
id: 32,
Name: 'John',
Occupation: 'jobs/JOB_PROGRAMMER_ID'
}
// jobs document collection
{
id: 'JOB_PROGRAMMER_ID',
name: 'Programmer',
hours: 40
}
我可以写出一个后端查询功能,它会自动解决这些关系,但是想知道是否有一种内置的方法可以做到这一点。
答案 0 :(得分:2)
可以使用Cosmosdb.Only就是没有多个集合,你需要嵌入一个集合中,如下所述。
关系数据库不是您可以创建的唯一地方 实体之间的关系。在文档数据库中,您可以拥有 一个文档中实际与其他数据相关的信息 文档。现在,我并不主张我们建立的一分钟 更适合Azure中的关系数据库的系统 Cosmos DB,或任何其他文档数据库,但简单的关系 很好,可以非常有用。
<强> Embedding documents 强>
答案 1 :(得分:1)
您可以在文档中存储所需的任何类型的引用。但是,正如@gaurav在评论中提到的那样,您需要创建其他查询来跟踪这些关系(无论是在同一个集合中还是在不同的集合中)。
查询(以及存储过程)的范围限定为单个集合(更准确地说,是单个分区,尽管可以具有跨分区查询)。它们不能跨越多个集合;这取决于您解释您的引用(无论是路径,ID等),然后使用它作为后续查询的基础。
如果多个查询对您的解决方案不切实际,您需要设计一些其他方案(例如非规范化,您将在文档中存储相关数据的子集,作为子文档或子文档集合)。注意:对于嵌入式文档,如果嵌入文档的数量无限制(例如没有限制,如博客帖子的评论或回复推文),则存在超过最大文档大小的风险,这会破坏您的应用程序发生(除非你有替代逻辑用于存储超出单个文档大小限制的内容)。