Node.js Firestore中对象嵌套数组的数据模型
我需要经验丰富的NoSQL工程师就如何构造数据提供建议Node.js Firestore中对象嵌套数组的数据模型,node.js,firebase,google-cloud-firestore,nosql,data-modeling,Node.js,Firebase,Google Cloud Firestore,Nosql,Data Modeling,我需要经验丰富的NoSQL工程师就如何构造数据提供建议 我想将我的SQL数据结构建模为NoSQL for Google Cloud Firestore 我以前没有使用NoSQL数据库的经验,但我精通传统SQL 我使用Node.js编写查询 到目前为止,我使用示例数据将三个表转换为JSON文档: { "session": { "userId": 99992222, "token": "jwttoken1191891j1kj1khjjk1hjk1kj1",
- 我想将我的SQL数据结构建模为NoSQL for Google Cloud Firestore李>
- 我以前没有使用NoSQL数据库的经验,但我精通传统SQL
- 我使用Node.js编写查询
{
"session": {
"userId": 99992222,
"token": "jwttoken1191891j1kj1khjjk1hjk1kj1",
"created": "timestamp"
}
}
我的问题是:
basketDetail
?它在哪里很好,还是我应该定义它自己的集合?
我预料会有疑问
- 偶尔添加所有最近的用法
- 经常检查用户是否拥有特定的产品id
- 经常用新数据替换整个
对象李>baskedDetail
- 偶尔更新一个特定的产品标识
user
与basketDetail
分开,我将如何在查询中将其连接起来JOIN
子句。Firestore中的查询很浅,只能从运行查询所针对的集合中获取元素。除非使用,否则无法在一个查询中从两个集合获取文档,但事实并非如此,因为项目中的集合具有不同的名称
如果有三个集合,则需要三个单独的查询。你不可能一蹴而就
basketDetail
可以保持在此限制范围内,则可以使用该模式,否则,将其添加到子集合。除此之外,所有这些操作都允许在Firestore中进行。如果您在实现它们时遇到困难,请发布另一个问题,以便我们可以查看
如果将用户集合与查询中的basketDetail分开,我将如何将其连接
不能连接/加入两个集合。如果在子集合中分隔basketDetail
,则需要两个查询
JOIN
子句。Firestore中的查询很浅,只能从运行查询所针对的集合中获取元素。除非使用,否则无法在一个查询中从两个集合获取文档,但事实并非如此,因为项目中的集合具有不同的名称
如果有三个集合,则需要三个单独的查询。你不可能一蹴而就
basketDetail
可以保持在此限制范围内,则可以使用该模式,否则,将其添加到子集合。除此之外,所有这些操作都允许在Firestore中进行。如果您在实现它们时遇到困难,请发布另一个问题,以便我们可以查看
如果将用户集合与查询中的basketDetail分开,我将如何将其连接
不能连接/加入两个集合。如果在子集合中分隔basketDetail
,则需要两个查询
{
"user": {
"id": 99992222,
"username": "userName",
"avatarUrl": "https://url-xxxx.com",
"lastLogin": "2019-11-23 13:59:48.884549",
"created": "2019-11-23 13:59:48.884549",
"modified": "2019-11-23 13:59:48.884549",
"visits": 1,
"profile": true,
"basketDetail": { // I get this data from a third party API
"response": {
"product_count": 2,
"products": [
{
"product_id": 111,
"usageInMinutes_recent": 0,
"usageInMinutes": 0,
"usageInMinutes_windows": 0,
"usageInMinutes_mac": 0,
"usageInMinutes_linux": 0
},
{
"product_id": 222, // no recent usage here
"usageInMinutes": 0,
"usageInMinutes_windows": 0,
"usageInMinutes_mac": 0,
"usageInMinutes_linux": 0
}
]
}
}
}
}
{
"visitor": {
"id": 999922221,
"created": "2019-11-23 13:59:48.884549"
}
}