• Node.js Video Tutorials

Node.js - MongoDB 插入



MongoDB是一个面向文档的数据库,可以通过名为mongodb的NPM模块与Node.js交互。文档是MongoDB数据库的核心。它是一组键值对的集合。我们也可以将其视为类似于SQL基于关系数据库的表中的一行,就像MongoDB中的集合类似于关系数据库中的表一样。NPM mongodb包提供了insertOne()和insertMany()方法,可以使用这些方法将一个或多个文档从Node.js应用程序添加到集合中。

MongoDB将数据记录存储为BSON文档。BSON是JSON文档的二进制表示。MongoDB文档由字段和值对组成,具有以下结构:

{
   field1: value1,
   field2: value2,
   field3: value3,
   ...
   fieldN: valueN
}

字段的值可以是任何BSON数据类型,包括其他文档、数组和文档数组。

每个文档都以一个名为“_id”的特殊键为特征,该键具有唯一值,类似于关系数据库实体表中的主键。键也称为字段。如果插入的文档省略了_id字段,则MongoDB驱动程序会自动为_id字段生成一个ObjectId。

insertOne() 方法

Collection对象具有insertOne()方法,该方法将单个文档插入到集合中。

Collection.insertOne(doc)

要插入的文档作为参数传递。它将单个文档插入到MongoDB中。如果传入的文档不包含_id字段,驱动程序将向每个缺少该字段的文档添加一个_id字段,从而修改文档。

示例

使用以下代码,我们将单个文档插入数据库中的products集合中。

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

      // Create a single new document
      await createdoc(client, "mydatabase", "products", {
         "ProductID":1, "Name":"Laptop", "Price":25000
      });
  
       
   } finally {
      // Close the connection to the MongoDB cluster
      await client.close();
   }
}

main().catch(console.error);

async function createdoc(client, dbname, colname, doc){
   const dbobj = await client.db(dbname);
   const col = dbobj.collection(colname);
   const result = await col.insertOne(doc);
   console.log(`New document created with the following id: ${result.insertedId}`);
}

输出

创建新的列表,ID为:65809214693bd4622484dce3

Mydp Products

Mongo shell也可以用来查看插入的文档。

> use mydb;
< switched to db mydb
> products=db['products']
< mydb.products
> docs=products.find()
{
   _id: ObjectId("65809214693bd4622484dce3"),
   ProductID: 1,
   Name: 'Laptop',
   Price: 25000
}

insertMany() 方法

Collection对象的insertMany()方法使得可以插入多个文档。JSON文档数组用作参数。我们还在下面的示例中使用了SRV连接字符串:

示例

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

async function main(){

   //const uri = "mongodb://127.0.0.1:27017";
   const uri = "mongodb+srv://user:[email protected]/?retryWrites=true&w=majority";
   
   const client = new MongoClient(uri);

   try {
      // Connect to the MongoDB cluster
      await client.connect();

      // Make the appropriate DB calls

      // insert documents
      await createdocs(client, [
         {'ProductID':1, 'Name':'Laptop', 'price':25000},
         {'ProductID':2, 'Name':'TV', 'price':40000},
         {'ProductID':3, 'Name':'Router', 'price':2000},
         {'ProductID':4, 'Name':'Scanner', 'price':5000},
         {'ProductID':5, 'Name':'Printer', 'price':9000}
      ]);
  
   } finally {
      // Close the connection to the MongoDB cluster
      await client.close();
   }
}

main().catch(console.error);

async function createdocs(client, docs){
   const result = await client.db("mydb").collection("products").insertMany(docs);
   console.log(`${result.insertedCount} new document(s) created with the following id(s):`);
   console.log(result.insertedIds);
}

输出

5 new listing(s) created with the following id(s):
{
   '0': new ObjectId('6580964f20f979d2e9a72ae7'),
   '1': new ObjectId('6580964f20f979d2e9a72ae8'),
   '2': new ObjectId('6580964f20f979d2e9a72ae9'),
   '3': new ObjectId('6580964f20f979d2e9a72aea'),
   '4': new ObjectId('6580964f20f979d2e9a72aeb')
}

您可以将文档集合导出为CSV格式。

_id,ProductID,Name,Price,price
65809214693bd4622484dce3,1,Laptop,25000,
6580964f20f979d2e9a72ae8,2,TV,40000
6580964f20f979d2e9a72ae9,3,Router,2000
6580964f20f979d2e9a72aea,4,Scanner,5000
6580964f20f979d2e9a72aeb,5,Printer,9000
广告