Node.js - MongoDB 创建数据库



MongoDB 是一个开源、跨平台、面向文档的数据库环境。MongoDB使用类似JSON的无模式文档。多个文档构成一个集合,并且一个或多个集合可能存在于 MongoDB 数据库中。在本章中,我们将学习如何使用Node.js应用程序创建 MongoDB 数据库。

MongoDB数据库管理软件有以下三个版本:

  • MongoDB 社区 - MongoDB 的源代码可用、免费使用和自我管理的版本,可用于本地安装,适用于 Windows、Linux 和 macOS。
  • MongoDB Enterprise - MongoDB的商业,基于订阅,自我管理的MongoDB版本,具有许多比社区版本更高级的功能。
  • MongoDB Atlas - 一种按需、完全托管的服务,用于在云中部署MongoDB。它在 AWS、Microsoft Azure 和 Google Cloud Platform 上运行。

连接字符串

用于 Node.js 的 mongodb 驱动程序使用 require() 函数导入到代码中。MongoClient 类的对象表示数据库连接。您需要将连接字符串传递给其构造函数。


const { MongoClient } = require('mongodb');
const client = new MongoClient(ConnectionString);

MongoDB连接字符串必须是以下格式之一:

标准连接字符串格式 - 此格式用于连接到自托管的 MongoDB 独立部署、副本集或分片集群。标准 URI 连接方案的格式为 −

mongodb://[username:password@]host1[:port1][,...hostN[:portN]][/[defaultauthdb][?options]]

默认连接字符串为

mongodb://localhost:27017/

SRV 连接格式 − 具有对应于 DNS SRV 记录的主机名的连接字符串。MongoDB Atlas使用SRV连接格式。MongoDB支持DNS构建的种子列表。它允许更灵活的部署,并能够在不重新配置客户端的情况下轮流更改服务器。SRV URI 连接方案具有以下形式 -

mongodb+srv://[username:password@]host[/[defaultauthdb][?options]]

下面是 SRV 连接字符串的示例 -


const uri = "mongodb+srv://user:pwd@cluster0.zhmrg1h.mongodb.net/?retryWrites=true&w=majority";

在以下示例中,我们使用标准连接字符串来提取数据库列表。

示例:数据库列表

MongoClient 对象的 connect() 方法返回一个 Promise。对 connect() 方法的调用是异步的。接下来,调用函数 listdatabases()。


const { MongoClient } = require('mongodb');

async function main() { 	 	
	 	const uri = "mongodb://localhost:27017/";
		
	 	const client = new MongoClient(uri);
	 	try {
	 	 	 // Connect to the MongoDB cluster
	 	 	 await client.connect();
		 			 	
	 	 	 // Make the appropriate DB calls
	 	 	 await listDatabases(client);
	 	} catch (e) {
	 	 	 console.error(e);
	 	} finally {
	 	 	 // Close the connection to the MongoDB cluster
	 	 	 await client.close();
	 	}
}

main().catch(console.error);

async function listDatabases(client) {
	 	databasesList = await client.db().admin().listDatabases();
	 	console.log("Databases:");
	 	databasesList.databases.forEach(db => console.log(` - ${db.name}`));
};

输出

Databases:
- admin
- config
- local
- myProject
- mydb

创建新数据库

要在服务器上创建新数据库,您需要调用 MongoClient 类的 db() 方法。


var dbobj = client.db(database_name, options);

db() 方法返回一个数据库实例,该实例表示服务器上的数据库。在以下示例中,我们演示了如何在 MongoDB 中创建一个名为 mydatabase 的新数据库。


const {MongoClient} = require('mongodb');

async function main(){
	 	const uri = "mongodb://localhost:27017/mydb";
	 	const client = new MongoClient(uri);

	 	try {
	 	 	 // Connect to the MongoDB cluster
	 	 	 await client.connect();
	 	 	 await createdb(client, "mydatabase"); 	 	 		
	 	} finally {
	 	 	 // Close the connection to the MongoDB cluster
	 	 	 await client.close();
	 	}
}

main().catch(console.error);

async function createdb(client, dbname){
	 	const dbobj = await client.db(dbname);
	 	console.log("Database created");
	 	console.log(dbobj);
}

但是,请注意,在至少创建一个集合并且其中至少应有一个文档之前,不会在服务器上实际创建数据库。