在像这样的Azure Documentdb文档中
{
"id": "WakefieldFamily",
"parents": [
{ "familyName": "Wakefield", "givenName": "Robin" },
{ "familyName": "Miller", "givenName": "Ben" }
],
"children": [
{
"familyName": "Merriam",
"givenName": "Jesse",
"gender": "female",
"grade": 1,
"pets": [
{ "givenName": "Goofy" },
{ "givenName": "Shadow" }
]
},
{
"familyName": "Miller",
"givenName": "Lisa",
"gender": "female",
"grade": 8
}
],
"address": { "state": "NY", "county": "Manhattan", "city": "NY" },
"isRegistered": false
};
Run Code Online (Sandbox Code Playgroud)
如何查询给名字的宠物是"高飞"的孩子?
看起来以下语法无效
Select * from root r
WHERE r.children.pets.givenName="Goofy"
Run Code Online (Sandbox Code Playgroud)
相反,我需要这样做
Select * from root …Run Code Online (Sandbox Code Playgroud) 我正在使用Azure DocumentDB,我在NoSql中的所有经验都在MongoDb中.我查看了定价模型,每个集合的成本.在MongoDb中,我会为我使用的东西创建3个集合:用户,公司和电子邮件.我注意到这种方法每月收费24美元.
我和我一起工作的人告诉我,我做错了.我应该将所有这三个东西存储在一个集合中,并带有一个字段来描述数据类型.每个集合应该按日期或地理区域相关联,因此世界上有一部分要搜索的部分较小.并:
"将不同类型的文档合并到一个集合中,并在所有文档中添加一个字段,以便像搜索类型字段或其他内容一样将它们分开"
我永远不会梦想在Mongo中这样做,因为它会使索引,分片键和其他难以理解的东西.
可能没有可能在对象之间重叠的字段(例如:电子邮件和公司对象)
我可以这样做,但我似乎找不到任何其他人这样做的例子 - 这向我表明可能是不对的.现在,我不需要一个例子,但是有人可以指向某个位置来描述哪个是"正确"的方法吗?或者,如果您为所有数据创建单个集合 - 除了Azure的定价模型之外,这样做的优点/缺点是什么?
关于DocumentDb架构设计的任何好文章?
我在Azure DocumentDB中有一个集合,其中我使用名为clusterName的JSON属性将文档集群到3个集合中.这三组文件的模板有些像:
{"clusterName":"CustomerInformation","id":"CustInfo1001","custName":"XXXX"},
{"clusterName":"ZoneInformation","id":"ZoneInfo5005","zoneName":"YYYY"},
{"clusterName":"CustomerZoneAssociation","id":"CustZoneAss9009","custId":"CustInfo1001","zoneId":"ZoneInfo5005"}
如您所见,CustomerZoneAssociation的文档将CustomerInformation和ZoneInformation的文档与其ID相关联.我需要帮助在CustomerInformation和ZoneInformation集群中查询来自CustomerZoneAssociation集群中关联的Id的信息.我期待的查询结果是:
{"clusterName":"CustomerZoneAssociation","id":"CustZoneAss9009","custId":"CustInfo1001","custName":"XXXX","zoneId":"ZoneInfo5005","zoneName":"YYYY"}
请建议一个只需1次访问DocumentDB的解决方案