1. MongoDB的基本概念和结构
MongoDB是一种基于文档的数据库管理系统,采用BSON格式(二进制JSON)来存储数据,与传统的关系型数据库不同,MongoDB 不需要定义表结构,存储数据时可以自由组合各种数据类型。
MongoDB中常用的基本概念有:
1) 数据库(Database):MongoDB的一个实例可以包含多个数据库,每个数据库都有独立的权限和文件。
2) 集合(Collection):集合类似于关系型数据库中的表,是一组没有固定格式的文档。
3) 文档(Document):MongoDB中的数据以 BSON(Binary JSON)文档的形式存储。BSON是一种二进制序列化格式,可轻松表示编码为JSON格式的更多数据类型。
4) 字段(Field):集合中的每个文档包含一个或多个字段,是一种键值对的形式,其中键表示字段的名称,值表示字段的值。
2. 安装MongoDB
安装MongoDB的方式有很多种,这里介绍在Ubuntu系统上的安装方式。
2.1. 添加MongoDB官方仓库
在终端中输入以下命令:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 68818C72E52529D4
接着,输入以下命令来添加MongoDB到官方仓库:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
执行update命令更新apt源,输入以下命令:
sudo apt-get update
2.2. 安装MongoDB
在更新完apt源之后,我们就可以安装mongodb了。执行以下命令:
sudo apt-get install -y mongodb-org
安装完成后,MongoDB就已经启动了。
在终端输入以下命令进行启动服务:
sudo systemctl start mongod
如果需要设置开机自启动,可以输入以下命令:
sudo systemctl enable mongod
3. MongoDB的常用命令
3.1. 连接MongoDB
连接MongoDB的方式有两种:使用mongo命令连接、使用驱动程序连接。 mongo可以通过命令行连接MongoDB数据库。使用mongo命令连接时,可以在mongo shell中执行MongoDB命令。mongo shell是一个JavaScript的控制台,用于交互式操作MongoDB数据库。
mongo
3.2. 创建数据库和集合
MongoDB中使用use命令来创建数据库。如果该数据库不存在,则会自动创建。
use mydb
此时,mydb数据库就创建成功了。使用show dbs命令可以查看已创建数据库。
show dbs
现在,我们可以在mydb数据库中创建集合了。使用db.createCollection()来创建集合。以下示例将在mydb数据库中创建名为mycollection的集合:
db.createCollection("mycollection")
3.3. 插入文档
使用insert()方法插入文档,insert一次只能插入一个文档(一行数据)。
db.student.insert({"name": "Jack", "age": 18})
在这个示例中,我们向student集合中插入了一条数据(一个文档)。插入后,在mongo shell中使用db.student.find()命令可以检索出该文档。
db.student.find()
3.4. 更新文档
使用update()方法进行文档的更新。
以下示例将更新student集合中name字段为Jack的文档的age字段为20:
db.student.update({"name": "Jack"}, {"$set": {"age": 20}})
在这个示例中,使用update()方法来更新student集合中符合查询条件的文档。"$set"操作符用来指定要更新的字段。
3.5. 删除文档
使用remove()方法来删除文档。
以下示例将删除student集合中名为Jack的文档:
db.student.remove({"name": "Jack"})
在这个示例中,使用remove()方法来删除student集合中符合查询条件的文档。
4. MongoDB的批量操作
4.1. 批量插入
使用insertMany()方法插入多个文档,以数组的形式传递多个文档。
以下示例将student集合中插入多个文档:
db.student.insertMany([{"name": "Tom", "age": 20}, {"name": "Lucy", "age": 18}, {"name": "John", "age": 19}])
4.2. 批量更新
使用updateMany()方法批量更新符合条件的文档。
以下示例将student集合中所有年龄大于18岁的文档的age字段更新为22:
db.student.updateMany({"age": {"$gt": 18}}, {"$set": {"age": 22}})
在这个示例中,使用updateMany()方法来更新student集合中所有符合查询条件的文档。"$gt"操作符表示大于。
4.3. 批量删除
使用deleteMany()方法删除符合条件的多个文档。
以下示例将student集合中所有名为Tom的文档删除:
db.student.deleteMany({"name": "Tom"})
在这个示例中,使用deleteMany()方法来删除student集合中所有符合查询条件的文档。
5. 使用MongoDB的驱动程序
5.1. 连接MongoDB
MongoDB驱动程序可以连接MongoDB数据库。在Python中使用pymongo模块来连接MongoDB。
在Python中,以下示例展示了如何连接MongoDB数据库:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
print(db)
在这个示例中,使用MongoClient来连接MongoDB数据库。在创建MongoClient时,需要指定MongoDB服务器的地址和端口号。创建MongoClient对象之后,就可以通过该对象访问MongoDB数据库。使用client["mydatabase"]创建mydatabase数据库的引用。可以通过print(db)来输出引用。
5.2. 插入数据
使用insert_one()方法或insert_many()方法来插入一个或多个文档。
以下示例将向student集合中插入一条记录:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
coll_student = db["student"]
record = {"name": "Tom", "age": 20}
x = coll_student.insert_one(record)
print(x.inserted_id)
在这个示例中,使用insert_one()方法来向student集合中插入一条数据。
5.3. 查询数据
使用find()方法查询一个或多个文档。
以下示例将查询student集合中所有文档,并将查询结果打印输出:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
coll_student = db["student"]
for x in coll_student.find():
print(x)
在这个示例中,使用find()方法查询student集合中所有文档。使用for循环打印查询结果。
5.4. 更新数据
使用update_one()方法或update_many()方法来更新一个或多个文档。
以下示例将更新name为Tom的文档的age字段为22:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
coll_student = db["student"]
condition = {"name": "Tom"}
new_value = {"$set": {"age": 22}}
coll_student.update_one(condition, new_value)
在这个示例中,使用update_one()方法来更新student集合中符合查询条件的文档。
5.5. 删除数据
使用delete_one()方法或delete_many()方法来删除一个或多个文档。
以下示例将删除student集合中名为John的文档:
import pymongo
client = pymongo.MongoClient("mongodb://localhost:27017/")
db = client["mydatabase"]
coll_student = db["student"]
condition = {"name": "John"}
coll_student.delete_one(condition)
在这个示例中,使用delete_one()方法来删除student集合中符合查询条件的文档。
6. 总结
本文介绍了MongoDB的基本概念和结构、如何在Ubuntu系统上安装MongoDB。并介绍了MongoDB的常用命令,包括连接MongoDB、创建数据库和集合、插入、更新和删除文档。此外,本文还介绍了如何使用MongoDB的驱动程序,通过Python的pymongo库来操作MongoDB数据库。