零、参考资料
https://docs.mongoing.com/
一、数据库级别操作
1.1 命令内容
1.启动 MongoDB 服务器:
mongod
2.连接到 MongoDB 服务器
mongo
3.显示数据库列表
show dbs
# 或者
show databases
4.创建/使用数据库——没有这个数据库就创建,有就使用
use mydatabase
5.删除数据库
use mydatabase // 切换到要删除的数据库
db.dropDatabase()
1.2 注意要点
在MongoDB中,show dbs命令显示的是所有已经包含数据的数据库列表。如果你刚刚创建了一个新的数据库但尚未往其中插入任何数据,那么在执行show dbs时是看不到这个新数据库的。要显示当前数据库,你可以使用db命令展示当前的数据库
db
如果你想要显示所有数据库,包括没有数据的数据库,你可以插入一些数据到新创建的数据库,然后再次执行show dbs,可以依次执行以下命令,就可以看到你新建的数据库了
use your_new_database
db.your_collection.insert({key: "value"})
show dbs
二、数据库中的集合(类似于Mysql的表)操作
2.1 命令内容
- 创建集合(类似于表):
db.createCollection("")
- 显示集合列表:
show collections
- 插入文档数据:
db..insertOne({ key: "value" })
db..insertMany([
{ key: "value1" }
{ key: "value2" }
])
- 查询文档:
# 查询所有数据
db..find()
# 查询数据条数
db..count({})
- 更新文档数据:
db..updateOne({ key: "value" }, { $set: { new_key: "new_value" } })
# 多条更新用updateMany
- 删除文档数据:
db..deleteOne({ key: "value" })
# 如果有个数据
# {
# outline: {
# name: "123456",
# ...
# },
# ...
# }
# 而我们需要检索到对应的条件进行删除,则可以
db..deleteMany({ "outline.name": "aaa" })
- 删除集合:
db..drop()
三、复杂案例
场景:
假设我们有一个 users 集合,其中包含用户的信息。每个文档包含用户的姓名 (name)、年龄 (age)、所在城市 (city)、注册日期 (registration_date) 等信息。
步骤:
1.创建数据库和集合,并插入一些数据:
use complex_query_example
db.users.insertMany([
{ name: "Alice", age: 25, city: "New York", registration_date: ISODate("2022-01-01") },
{ name: "Bob", age: 30, city: "San Francisco", registration_date: ISODate("2022-02-15") },
{ name: "Charlie", age: 28, city: "Los Angeles", registration_date: ISODate("2022-03-20") },
{ name: "David", age: 35, city: "New York", registration_date: ISODate("2022-04-10") },
{ name: "Eve", age: 22, city: "San Francisco", registration_date: ISODate("2022-05-05") }
])
2.执行复杂查询:
现在,执行一个复杂查询,找出年龄在 25 到 30 岁之间、居住在 "New York" 或 "San Francisco" 的用户,并按注册日期降序排序。
db.users.find({
$and: [
{ age: { $gte: 25, $lte: 30 } },
{ $or: [ { city: "New York" }, { city: "San Francisco" } ] }
]
}).sort({ registration_date: -1 })
这个查询使用了 MongoDB 的 $and 和 $or 操作符,同时结合了年龄和城市的条件。结果会按照注册日期降序排序。
解释:
- $and: 匹配同时满足多个条件的文档,就是在数组中的条件全部满足。
- $or: 匹配满足任一条件的文档,就是在数组中的条件满足一个就行。
- $gte, $lte: 大于等于、小于等于条件。
- sort(): 对结果进行排序,-1 表示降序。