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 文档中的特定字段