📅  最后修改于: 2023-12-03 15:03:02.048000             🧑  作者: Mango
MongoDB是一种面向文档的,非关系型数据库管理系统。它使用BSON格式存储数据,支持动态查询和索引,而且可以很好地处理大量数据。在这篇文章中,我们将深入介绍一些MongoDB的关键概念和使用方法。
安装MongoDB非常简单。首先用Homebrew在Mac上安装:
brew install mongodb
在Windows上,你可以从官方网站https://www.mongodb.com/download-center/community下载适用于你的操作系统的安装程序。安装程序会将MongoDB安装到C:\Program Files\MongoDB的目录下。请确保将此目录添加到PATH系统环境变量中。
安装完成后,你可以运行以下命令启动MongoDB服务:
mongod
连接MongoDB服务非常简单。你可以使用MongoDB的默认连接URL:mongodb://localhost:27017/。
使用mongodb库:
const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
MongoClient.connect(url, (err, client) => {
console.log("Connected successfully to server");
const db = client.db('testDb');
client.close();
});
使用mongoose库:
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost:27017/testDb', {useNewUrlParser: true});
在MongoDB中,集合是存储文档的地方。你可以把集合看成是表。
db.createCollection("customers", {
validator: {
$jsonSchema: {
bsonType: "object",
required: [ "name", "age", "gender" ],
properties: {
name: {
bsonType: "string",
description: "must be a string and is required"
},
age: {
bsonType: "int",
minimum: 18,
maximum: 60,
description: "must be an integer in the range of 18 and 60"
},
gender: {
bsonType: "string",
enum: [ "male", "female" ],
description: "can only be one of the enum values and is required"
},
address: {
bsonType: "string",
description: "must be a string if the field exists"
}
}
}
}
})
向MongoDB中插入数据也很简单。你只需要给集合中添加一个文档即可。
db.collection('customers').insertOne({
name: 'John Doe',
age: 30,
gender: 'male',
address: '1234 Main St'
}, function(err, result) {
console.log("Inserted a document into the customers collection.");
});
MongoDB支持非常灵活的数据查询。你可以使用不同的参数来查询文档。
db.collection('customers').find({
gender: 'male'
}).toArray(function(err, result) {
console.log(result);
});
MongoDB中的数据更新也非常简单。你可以使用updateOne函数来更新一个文档。
var myquery = { address: "1234 Main St" };
var newvalues = { $set: {name: "Jane Doe"} };
db.collection("customers").updateOne(myquery, newvalues, function(err, res) {
console.log("1 document updated");
});
你可以使用deleteOne或deleteMany函数从MongoDB中删除文档。
db.collection("customers").deleteOne({ name: "John Doe" }, function(err, obj) {
console.log("1 document deleted");
});
db.collection("customers").deleteMany({ gender: "male" }, function(err, obj) {
console.log(obj.result.n + " document(s) deleted");
});
索引是MongoDB中的一个非常重要的概念。你可以使用索引来优化查询操作。
db.collection("customers").createIndex({name: 1});
MongoDB的聚合操作允许你按条件来对集合中的文档进行分组、筛选等操作。
db.collection("orders").aggregate([
{$match: {status: "A"}},
{$group: {_id: "$cust_id", total: {$sum: "$amount"}}},
{$sort: {total: -1}}
])
在我们讲解的一些MongoDB的关键概念和使用方法。如果你想了解更多关于MongoDB的内容,请参考相关文档和技术博客。