• Node.js Video Tutorials

Node.js - MongoDB 数据库创建



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

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

MongoDB 社区版 - MongoDB 的源代码可用、免费使用和自管理版本,可用于本地安装,适用于 Windows、Linux 和 macOS。

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://127.0.0.1:27017/

SRV 连接格式 - 连接字符串的主机名对应于 DNS SRV 记录。MongoDB Atlas 使用 SRV 连接格式。MongoDB 支持 DNS 构造的种子列表。它允许更大的部署灵活性以及在无需重新配置客户端的情况下轮换服务器的能力。SRV URI 连接方案具有以下形式:

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

这是一个 SRV 连接字符串的示例:

const uri = "mongodb+srv://user:[email protected]/?retryWrites=true&w=majority";

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

示例:数据库列表

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

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

async function main() {    
   const uri = "mongodb://127.0.0.1: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() 方法返回一个 db 实例,该实例代表服务器上的数据库。在下面的示例中,我们演示了如何在 MongoDB 中创建一个名为 mydatabase 的新数据库。

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

async function main(){
   const uri = "mongodb://127.0.0.1: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);
}

但是,请注意,数据库不会在服务器上物理创建,除非至少创建了一个集合,并且其中至少包含一个文档。

广告