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();
});
});
重要说明:
在查询参数中,可以指定要包含或排除的字段
在以上示例中,我们只包含name
和address
字段,并将_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文档以获取更多详细信息。