firebase 如何在NoSQL数据库中存储类别中的类别

w3nuxt5m  于 2023-03-31  发布在  其他
关注(0)|答案(1)|浏览(146)

我是Firebase和NoSQL的新手,来自SQL背景。我想知道存储数据的最佳方式是什么:
有4个类别,在每个类别中,有3个子类别。对于每个子类别,有一个大约10-20个问题的列表,我需要能够从用户每次请求(随机)中选择5个。
我最初只是想把SQL的设计转移到NoSQL中,但是我不确定这是否违背了NoSQL的目的
我想知道这样的解决方案是否可行,通过在子类别下的每个类别下存储10-20个问题的列表:

"questions": {
    "category_one": {
        "subcategory_one": ["question_one", "question_two",...],
        "subcategory_two": ["question_one", "question_two",...],
        "subcategory_three": ["question_one", "question_two",...],
    },
    "category_two": {
        "subcategory_one": ["question_one", "question_two",...],
        "subcategory_two": ["question_one", "question_two",...],
        "subcategory_three": ["question_one", "question_two",...],
    },
    .
    .
}

以这种方式存储它是否允许我高效地查询和检索所需的数据?
我想到的第一种方法就像一个SQL数据库,其中每个问题都是自己的JSON对象。

"1": {
    "category": "1",
    "subcategory": "1",
    "question": "...",
},
"2": {
    "category": "1",
    "subcategory": "1",
    "question": "...",
},

(我觉得这样更糟……)

bzzcjhmw

bzzcjhmw1#

根据你最后的评论:
最少8个,最多20个左右。
如果您在特定类别和子类别下总是有8到20个问题,那么您必须创建一个引用,精确指向您想要阅读问题的类别/子类别:

db.child("questions").child("category_one").child("subcategory_one");

现在要获得5个随机问题,那么我建议您使用以下帖子中的解决方案:
How to get unique random product in node Firebase?
回答你的问题:
以这种方式存储它是否允许我高效地查询和检索所需的数据?
是的,这是一个可以查询以返回所需结果的结构。

相关问题