Mongodb一个运行实例中,允许创建多个数据库。使用命令
show dbs
admin 0.000GB
config 0.000GB
local 0.000GB
或命令
db.adminCommand({listDatabases:1});
{
"databases" : [
{
"name" : "admin",
"sizeOnDisk" : 40960,
"empty" : false
},
{
"name" : "config",
"sizeOnDisk" : 61440,
"empty" : false
},
{
"name" : "local",
"sizeOnDisk" : 73728,
"empty" : false
}
],
"totalSize" : 37228544,
"totalSizeMb" : 35,
"ok" : 1
}
即可列出所有db。
建立数据库连接以后,使用命令
use <database_name>
即可实现不同db之间的切换。但使用use切换db是,会改变当前shell环境中db变量的值。如果想同时操作两个数据库,使用use命令则无法满足需求。mongodb提供的方法
db.getSiblingDB(<database_name>)
来解决这样的问题,方便数据库管理的使用人员在同一个shell环境中操作mongodb instance中多个数据库。
作用
在shell环境中,无需修改当前数据库对象,返回当前mongodb运行实例中的其他数据库。在编写脚本中,使用该命令替代use命令。
定义
db.getSiblingDB(<database_name>)
其中 database_name是一个字符串(String)类型的参数,指定要切换的数据库名称。
使用场景
使用该方法,可以方便的操作数据库对象。
将数据库对象指定给变量
如当前mongodb数据库运行实例中包含users, records两个数据库。使用下面的命令,将数据库指定给变量。
let userDb = db.getSiblingDB('users');
则数据库操作和管理人员可以使用变量userDb来对数据库users进行操作。如
userDb.active.countDocuments(); //查询数据库users中集合active的文档数量
多数据库场景的使用
使用命令db.getSiblingDB()可以方便的在shell环境中完成多db的操作。下面的命令,实现了两个不同数据库集合的查找。
let users = db.getSiblingDB('users') //将users数据库赋值给变量users
let records = db.getSiblingDB('records') //将records数据库赋值给变量records
users.active.countDocuments() //查询user数据库中集合active的文档数量
users.active.findOne() //查询user数据库中集合active的文档中的一条记录
records.requests.countDoucments()//查询records数据库中集合requests的文档数量
records.requests.findOne()//查询records数据库中集合requests的文档中的一条记录