基于Docker安装

# 拉取并启用mongo镜像
docker run --restart=always -d --name mongo mongo

# 进入mongo镜像命令行模式
docker exec -it mongo bash

基本概念

  • Collections集合,相当于SQL里的Tables表
  • Document文档,相当于SQL里的Records记录
  • Schema字段,设置字段类型,大小等
  • Model模型

查看

  • 查看文档
db.movies.find()

# 查找条件 - 第一个参数
db.movies.find({year: 1994})

# 过滤字段 - 第二个参数
# 1代表显示, 0代表不显示
db.movies.find({year: 1994}, {title: 1})

# 限制查找的数量 
db.movies.find().size(3)

# 跳过前N个
db.movies.find().skip(3)

# 排序 
# 1代表升序(从小到大),-1代表降序(从大到小)
db.movies.find().sort({"rating.average": 1 })
  • 复杂查询条件
    • $eq 匹配等于指定值的值。
    • $gt 匹配大于指定值的值。
    • $gte 匹配大于或等于指定值的值。
    • $in 匹配数组中指定的任何值。
    • $lt 匹配小于指定值的值。
    • $lte 匹配小于或等于指定值的值。
    • $ne 匹配所有不等于指定值的值。
    • $nin 匹配数组中指定的值。
# 查找评分9.5以上的电影 $gt
db.movies.find({ "rating.average": { $gt : 9.5}}, {title:1, "rating.average": 1, _id: 0})

# 查找评分9.5以下的电影 $lt
db.movies.find({ "rating.average": { $lt : 9.5}}, {title:1, "rating.average": 1, _id: 0})

# 查找类型包含犯罪、剧情的电影 $in
 db.movies.find({genres: {$in:["犯罪", "剧情"]}}, {title: 1, genres: 1, _id:0})
 
# 查找类型不包含犯罪、剧情的电影 $nin
db.movies.find({genres: {$nin:["犯罪", "剧情"]}}, {title: 1, genres: 1, _id:0})

插入

  • 插入单个文档
db.albums.insertOne({title: "再见理想"})
  • 插入一个或多个文档
db.albums.insertMany([{title: "旧日足迹"}, {title: "Parachutes"}])
  • 插入一个或多个文档,且返回批量插入的结果
db.albums.insert([{title: "光辉岁月"}, {title: "继续革命"}])

更新

  • 根据查找到的单个文档进行更新
db.albums.updateOne(
    {title: "Parachates"},
    {
        $set: {artist: "Coldlay"}
    }
)
  • 根据查找到的单个或多个文档进行更新
db.albums.updateMany(
    {},
    {
        $set: {artist: "Beyond"}
    }
)
  • 根据查找到的单个或多个文档进行更新,并返回批量更新的数据
db.albums.update(
    {},
    {
        $set: {test: "cc"}
    }
)

删除

  • 删除匹配到的第一个文档
db.albums.deleteOne({artist: "Beyond"})
# 或者
db.albums.remove({artist: "Beyond"}, true)
  • 删除匹配到的所有文档
db.albums.deleteMany({ artist: "Beyond" })
# 或者
db.albums.remove({...})