教你MongoDB连接数据库并创建数据的使用方法

1. MongoDB连接数据库

MongoDB是一个基于文档的NoSQL数据库,使用它可以轻松存储和管理JSON格式的数据。在开始连接数据库之前,必须通过mongod命令启动MongoDB服务器。连接到本地MongoDB服务器可以使用以下代码:

const MongoClient = require('mongodb').MongoClient;

const url = 'mongodb://localhost:27017/myproject';

MongoClient.connect(url, (err, db) => {

// 连接之后的操作

db.close();

});

重要说明:

url表示MongoDB的URL,其中myproject是要连接的数据库名称,以及MongoDB服务器的端口27017

在连接到服务器之后,需要对数据库进行身份验证,确保安全性

2. 创建集合

在MongoDB中,数据存储在集合(collections)中。集合类似于数据库表,一个数据库可以包含多个集合。可以使用以下代码来创建一个名为customers的集合:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

dbo.createCollection("customers", function(err, res) {

if (err) throw err;

console.log("Collection created!");

db.close();

});

});

重要说明:

使用dbo.createCollection()方法创建集合

该方法需要两个参数:集合名称和回调函数

回调函数在集合创建成功时被调用,并打印出消息

3. 插入数据

创建了集合后,现在可以向其中插入数据。MongoDB使用JSON格式存储数据,并将其称为文档。

3.1 插入一个文档

将一个文档插入到customers集合中,可以使用以下代码:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

const myobj = { name: "John", address: "Highway 37" };

dbo.collection("customers").insertOne(myobj, function(err, res) {

if (err) throw err;

console.log("1 document inserted");

db.close();

});

});

重要说明:

上面的代码中,插入了一个名为John的文档,以及他的地址

使用insertOne()方法插入一个文档

该方法需要两个参数:要插入的文档,以及一个回调函数

回调函数在文档插入成功时被调用,并打印出消息

3.2 插入多个文档

同样可以使用insertMany()方法在一个集合中插入多个文档。以下是将多个文档插入到customers集合中的示例:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

const myobj = [

{ name: 'John', address: 'Highway 71'},

{ name: 'Peter', address: 'Lowstreet 4'},

{ name: 'Amy', address: 'Apple st 652'},

{ name: 'Hannah', address: 'Mountain 21'},

{ name: 'Michael', address: 'Valley 345'}

];

dbo.collection("customers").insertMany(myobj, function(err, res) {

if (err) throw err;

console.log("Number of documents inserted: " + res.insertedCount);

db.close();

});

});

重要说明:

insertOne()方法类似,insertMany()方法也需要两个参数:要插入的文档数组,以及一个回调函数

回调函数在文档插入成功时被调用,包含插入的文档数目

4. 查询数据

查询数据是MongoDB最常见的操作之一。可以使用丰富的查询语言来过滤和找到文档。以下是MongoDB的一些常见查询操作:

4.1 查询所有数据

要检索集合中的所有数据,可以使用以下代码:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

dbo.collection("customers").find({}).toArray(function(err, result) {

if (err) throw err;

console.log(result);

db.close();

});

});

重要说明:

find()方法不需要任何参数,返回集合中的所有文档

使用toArray()方法将结果转换为数组

4.2 查询指定字段

使用查询限定符来查询指定字段,以下示例可以返回只包含名字和地址的文档:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

dbo.collection("customers").find({}, { projection: { _id: 0, name: 1, address: 1 } }).toArray(function(err, result) {

if (err) throw err;

console.log(result);

db.close();

});

});

重要说明:

在查询参数中,可以指定要包含或排除的字段

在以上示例中,我们只包含nameaddress字段,并将_id字段排除

4.3 条件查询

条件查询可用于指定查询的结果。以下示例可以返回地址为Highway 37的文档:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

const query = { address: "Highway 37" };

dbo.collection("customers").find(query).toArray(function(err, result) {

if (err) throw err;

console.log(result);

db.close();

});

});

重要说明:

在查询参数中,可以指定查询条件

在上面的示例中,查询条件为{ address: "Highway 37" }

4.4 分页查询

要在MongoDB中执行分页查询,可以使用limit()方法和skip()方法。以下示例会跳过前五个文档,并返回接下来的10个文档:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

dbo.collection("customers").find().skip(5).limit(10).toArray(function(err, result) {

if (err) throw err;

console.log(result);

db.close();

});

});

重要说明:

在查询中,使用skip()方法跳过前n个文档

使用limit()方法返回n个文档

5. 更新数据

可以使用updateOne()updateMany()方法来更新文档。以下是如何更新一个文档的示例:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

const myquery = { name: "John" };

const newvalues = { $set: {address: "Canyon 123" } };

dbo.collection("customers").updateOne(myquery, newvalues, function(err, res) {

if (err) throw err;

console.log("1 document updated");

db.close();

});

});

重要说明:

在上面的示例中,我们将名为"John"的文档的地址更改为"Canyon 123"

使用updateOne()方法更新一个文档

方法的第一个参数是查询条件,第二个参数是要更新的值。在上面的示例中,使用了$set运算符来更新值

6. 删除数据

可以使用deleteOne()deleteMany()方法来删除文档。以下是如何删除一个文档的示例:

const MongoClient = require('mongodb').MongoClient;

const url = "mongodb://localhost:27017/myproject";

MongoClient.connect(url, function(err, db) {

if (err) throw err;

const dbo = db.db('myproject');

const myquery = { name: 'Peter' };

dbo.collection("customers").deleteOne(myquery, function(err, obj) {

if (err) throw err;

console.log("1 document deleted");

db.close();

});

});

重要说明:

在上面的示例中,我们删除名为"Peter"的文档

使用deleteOne()方法删除一个文档

第一个参数是查询条件,第二个参数是回调函数

总结

本文提供了MongoDB使用方法的一些基础知识,其中包括连接数据库,创建集合,插入数据,查询数据,更新数据以及删除数据。但是,MongoDB还有更多的功能和语法,请访问MongoDB文档以获取更多详细信息。

数据库标签