MongoDB中的用户特定数据库

Posted

技术标签:

【中文标题】MongoDB中的用户特定数据库【英文标题】:User specific database in MongoDB 【发布时间】:2015-04-22 03:16:18 【问题描述】:

我目前正在使用 Node js 和 MongoDB 开发库存管理软件。我对 MongoDB 很陌生,我的大部分项目都在 Oracle 和 mysql 工作过。

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

在 Oracle 数据库中选择数据的等价物是 从 User1.table 中选择 *, 从 User2.table 等中选择 *

另外,如果可能的话,如何使用像mongoose这样的node js mongo db客户端来实现?

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

如果这似乎是一个愚蠢的问题,我深表歉意,但如果有人能指出我正确的方向,我将不胜感激。

【问题讨论】:

【参考方案1】:

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

我在 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);  

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

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

根据我之前的示例,您还可以将架构参数传递给函数,根据每个用户的个人资料进行定制,并在连接到该数据库后触发插入语句。

【讨论】:

非常感谢!这有帮助:-)

以上是关于MongoDB中的用户特定数据库的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Express & Passportjs 检查 MongoDB 文档中的特定字段

MongoDB安全和认证

原创 | 003 MongoDB的安全与集群

返回 MongoDB 中的每个特定对象

如何检查 MongoDB 数据库中的所有集合以查找特定关键字?

如何将数据保存到 mongodb 中的子文档中?我正在将农场子文档转换为 null