📜  MongoDB-数据库参考(1)

📅  最后修改于: 2023-12-03 15:03:02.048000             🧑  作者: Mango

MongoDB-数据库参考

MongoDB是一种面向文档的,非关系型数据库管理系统。它使用BSON格式存储数据,支持动态查询和索引,而且可以很好地处理大量数据。在这篇文章中,我们将深入介绍一些MongoDB的关键概念和使用方法。

安装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服务非常简单。你可以使用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的内容,请参考相关文档和技术博客。

参考文献

MongoDB官方文档 MongoDB技术博客 MongoDB参考手册