MongoDB 中的用户特定数据库

User specific database in MongoDB

我目前正在使用 Node js 和 MongoDB 开发库存管理软件。我是 MongoDB 的新手,曾在 Oracle 工作过,MySQL 参与过我的大部分项目。

是否可以为每个使用我的软件的客户创建一个单独的数据库模式,每个客户只能访问他的数据库模式和集合的副本?

相当于在 Oracle 数据库中选择数据 Select * 来自 User1.table, Select * 来自 User2.table 等

此外,如果可能的话,如何使用像 mongoose 这样的节点 js mongo 数据库客户端来实现?

我查看了 MongoDB 文档,但它主要讨论将用户添加到数据库以进行授权。

如果这个问题看起来很愚蠢,我深表歉意,但如果有人能为此指出正确的方向,我将不胜感激。

在开始投入大量时间开发您的项目之前,请检查您尝试构建的场景的其他可能方法。

我对 SO 进行了快速搜索,发现了一些具有类似场景的其他线程:

  • MongoDB Database vs. Collection

  • MongoDB Web App - Database per User

  • Additional info about mongoose database creation

每当您在 mongoose 对象上调用 connect 方法时,您要么连接到现有数据库,要么创建它以防它尚不存在。

您可以有一个函数,允许您传入带有名称的名称参数并以编程方式创建数据库:

function createDatabase(name) {
    var conn_string = 'mongodb://localhost/';

    if (typeof name == 'string') {
        conn_string += name;
    }else{
        return false;
    }

    mongoose.connect(conn_string);  
}

另外,请注意,当您第一次在特定数据库的集合中插入记录时,将创建一个数据库。

只连接数据库是不行的,还得插入一条记录。

根据我之前的示例,您还可以将模式参数传递给函数,根据每个用户的配置文件定制,并在连接到该数据库后触发插入语句。