使用db.getSiblingDB()获取兄弟数据库

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 

即可实现不同db之间的切换。但使用use切换db是,会改变当前shell环境中db变量的值。如果想同时操作两个数据库,使用use命令则无法满足需求。mongodb提供的方法

db.getSiblingDB()

来解决这样的问题,方便数据库管理的使用人员在同一个shell环境中操作mongodb instance中多个数据库。

作用

在shell环境中,无需修改当前数据库对象,返回当前mongodb运行实例中的其他数据库。在编写脚本中,使用该命令替代use命令。

定义

db.getSiblingDB()

其中 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的文档中的一条记录

你可能感兴趣的:(mongodb,mongodb,数据库)