关于node.js:高效的NoSQL用户设计

Efficient NoSQL user design

我正在将MongoDB和Node一起用于相对简单的Web应用程序,该应用程序涉及用户注册和验证其登录信息。我有使用关系型数据库的经验,但是对NoSQL游戏还是相当陌生的。我想知道我是否可以将NoSQL数据库有效地与当前数据存储格式一起使用?

到目前为止,我保存用户的代码如下:

1
2
3
4
5
6
db.users.save({email: req.body.email, display_name: req.body.displayName, password: req.body.password}, function(err, saved) {
    if( err || !saved )
        console.log("User not saved");
    else
        console.log("User saved in MongoDB");
});

这里发生的是,每个用户都在MongoDB"集合"中生成自己的文档。我想知道当用户群相对较大时,这是否会减慢速度,我需要快速找到要进行身份验证的用户?

任何能在概念上帮助我或为我提供更多学习指导的答案,将不胜感激!


在MongoDB中,对与错主要取决于您将如何与数据进行交互。但是,对于大多数用例,每位用户一个文档似乎是一种可行的策略。

为加快用户检索速度,请记住为要用于检索用户的字段添加索引。

在这种情况下,您保存的文档没有_id字段。这意味着即使数据库中已经存在具有相同值的条目,也将使用新生成的_id来生成新文档。这是你想要的吗?当要使用.save(doc)函数更新现有文档时,需要使该文档的_id与要更新的_id具有相同的值。