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);
}
另外,请注意,当您第一次在特定数据库的集合中插入记录时,将创建一个数据库。
只连接数据库是不行的,还得插入一条记录。
根据我之前的示例,您还可以将模式参数传递给函数,根据每个用户的配置文件定制,并在连接到该数据库后触发插入语句。
我目前正在使用 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);
}
另外,请注意,当您第一次在特定数据库的集合中插入记录时,将创建一个数据库。
只连接数据库是不行的,还得插入一条记录。
根据我之前的示例,您还可以将模式参数传递给函数,根据每个用户的配置文件定制,并在连接到该数据库后触发插入语句。