好的,以下是MongoDB 简介学习笔记:
MongoDB 简介
MongoDB 是一种开源的 NoSQL(非关系型数据)数据库管理系统,使用 C++ 语言编写。它旨在为开发人员提供高度可扩展性、高性能和易于管理的数据库解决方案。
数据模型
MongoDB 的数据模型是面向文档的,与传统的基于行和列的关系型数据库不同。在 MongoDB 中,数据是以 BSON 格式(二进制 JSON 的缩写)存储的,这使得它更适合于处理半结构化数据。
例如,一个包含学生信息的文档可能如下所示:
jsonCopy Code{
"_id": ObjectId("5cf0cac9d64bf1a3c930e892"),
"name": "张三",
"age": 20,
"major": "计算机科学",
"courses": [
{
"name": "数据结构",
"teacher": "李四"
},
{
"name": "操作系统",
"teacher": "王五"
}
]
}
在文档中,每个字段都有其自己的名称和值。文档可以嵌套,也可以包含数组字段。
查询语言
MongoDB 提供了灵活且功能强大的查询语言,可以根据多个条件过滤数据,支持聚合、排序并支持分组操作。
例如,下面的查询可以查找年龄大于 18 岁并且专业为计算机科学的学生:
javascriptCopy Codedb.students.find({$and: [{age: {$gt: 18}}, {major: "计算机科学"}]})
高可用性和可伸缩性
MongoDB 支持主从复制和副本集,可提供高可靠性和可用性。它还支持分片,可轻松扩展到更大的数据集。
实例
以下是一个使用 MongoDB 存储客户数据的 Node.js 示例:
javascriptCopy Codeconst MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'myproject';
const client = new MongoClient(url, { useNewUrlParser: true });
client.connect(function(err) {
console.log("Connected successfully to server");
const db = client.db(dbName);
// 插入文档
db.collection('customers').insertOne({
name: 'John Doe',
email: 'john.doe@example.com'
}, function(err, result) {
console.log("Inserted a document into the customers collection.");
});
// 查询文档
db.collection('customers').find({}).toArray(function(err, docs) {
console.log("Found the following records:");
console.log(docs);
});
client.close();
});
在此示例中,我们连接到名为“myproject”的数据库,并向名为“customers”的集合插入一个客户文档,然后查询所有客户文档并将其输出到控制台。