启动

  • sudo /usr/local/mongodb/bin/mongo

    启动进程

  • sudo /usr/local/mongodb/bin/mongod -f /etc/mongod.conf

    进入数据库

  • sudo /usr/local/mongodb/bin/mongo

    数据库的操作

    1.查看所有数据库
  • show dbs
    2.使用数据库
    -use 数据库名
    3.查看当前数据库
  • db
    4.删除数据库
  • db.dropDatabase()
    5.删除集合
  • db.集合名.drop()
    6.创建集合,集合名为stu
  • db.createCollection(“stu”)
  • db.createCollection(“集合名”)
    7.查看所有集合
  • show collections
    8.插入
  • db.stu.insert({name:’gj’,gender:1})
  • db.集合名.insert({键:’值’,键:’值’,…})
    9.查询
  • db.stu.find({name:’gj’})
  • db.stu.find({键:’值’})
    10.更新
    ####### 1.全部修改
  • db.stu.update({name:’gj’},{name:’xx’})
    ####### 2.制定数据修改
  • db.stu.update({原来键:’原来值’},{原来键:’新值’})
    ####### 2.保存修改
    ####### 1.只修改指定数据
  • db.stu.save({name:’gj’},{name:’xx’})
    11.删除
    1.全部删除
  • db.stu.remove({})
    2.单条删除
  • db.stu.remove({name:’gj’},{justOne:’true’})
    12.基本查询
    方法find():查询
  • db.集合名称.find({条件文档})
  • 方法findOne():查询,只返回第一个
  • db.集合名称.findOne({条件文档})
  • 方法pretty():将结果格式化
  • db.集合名称.find({条件文档}).pretty()
    13.比较运算符
  • 小于$lt
  • 小于或等于$lte
  • 大于$gt
  • 大于或等于$gte
  • 不等于$ne
    ####### 例1:查询名称等于’gj’的学生
  • db.stu.find({name:’gj’})
    ####### 例2:查询年龄大于或等于18的学生
  • db.stu.find({age:{$gte:18}})
    14.逻辑运算符
    1
    2
     查询时可以有多个条件,多个条件之间需要通过逻辑运算符连接
    逻辑与:默认是逻辑与的关系
例1:查询年龄大于或等于18,并且性别为1的学生
  • db.stu.find({age:{$gte:18},gender:1})
    逻辑或:使用$or
    例2:查询年龄大于18,或性别为0的学生
  • db.stu.find({$or:[{age:{$gt:18}},{gender:1}]})
  • and和or一起使用
    例3:查询年龄大于18或性别为0的学生,并且学生的姓名为gj
  • db.stu.find({$or:[{age:{$gte:18}},{gender:1}],name:’gj’})
    15.范围运算符
    使用”$in”,”$nin” 判断是否在某个范围内
    例1:查询年龄为18、28的学生
  • db.stu.find({age:{$in:[18,28]}})
    16.正则表达式
    例1:查询姓黄的学生
  • db.stu.find({name:/^黄/})
  • db.stu.find({name:{$regex:’^黄’}}})
    17.自定义查询
    使用$where后面写一个函数,返回满足条件的数据
    例1:查询年龄大于30的学生
  • db.stu.find({$where:function(){return this.age>20}})
    18.limit和skip
    ####### 1.limit表示显示几个
    ####### 显示1个
  • db.students.find().limit(1)
    ####### 2.skip表示跳过几个,后边的全显示
    ####### 跳过4个
  • db.students.find().skip(4)
    ####### 3.结合使用
    ####### 跳过4个显示2个
  • db.students.find().skip(4).limit(2)

    19.投影
    1
    2
     参数为字段与值,值为1表示显示,值为0不显示
    特殊:对于_id列默认是显示的,如果不显示需要明确设置为0
  • db.集合名称.find({},{字段名称:1,…})

  • 例1
  • db.stu.find({},{name:1,gender:1})
  • 例2
  • db.stu.find({},{_id:0,name:1,gender:1})
    20.排序
    ####### 方法sort(),用于对结果集进行排序
  • db.集合名称.find().sort({字段:1,…})
    1
    2
    参数1为升序排列
    参数-1为降序排列
例1:根据性别降序,再根据年龄升序
  • db.stu.find().sort({gender:-1,age:1})
    21.统计个数
    ####### 方法count()用于统计结果集中文档条数
  • db.集合名称.find({条件}).count()
    ####### 例1:统计男生人数
  • db.stu.find({gender:1}).count()
    ####### 例2:统计年龄大于20的男生人数
  • db.stu.count({age:{$gt:20},gender:1})
    22.去重
    ####### 方法distinct()对数据进行去重
  • db.集合名称.distinct(‘去重字段’,{条件})
    ####### 例1:查找年龄大于18的性别(去重)
  • db.stu.distinct(‘gender’,{age:{$gt:18}})

mongodb插入数据

  • db.collecion.insert({}) 插入数据,_id存在就报错
  • db.collection.save({}) 插入数据,_id存在会更新

mongodb的更新操作

  • db.test1000.update({name:"xiaowang"},{name:"xiaozhao"})
  • 把name为xiaowang的数据替换为{name:"xiaozhao"}
  • db.test1000.update({name:"xiaohong"},{$set:{name:"xiaozhang"}})
  • 把name为xiaowang的数据name的值更新为xiaozhang
  • db.test1000.update({name:"xiaozhang"},{$set:{name:"xiaohong"}},{multi:true})
  • {multi:true}达到更新多条的目的

mongodb删除

  • db.test1000.remove({name:"xiaohong"},{justOne:true})
  • 默认情况会删除所有满足条件的数据,{justOne:true}能达到只删除一条的效果

mongodb的count方法

  • db.collection.find({条件}).count()
  • db.collection.count({})

mongodb的投影

  • 投影:选择返回结果的字段
  • db.collection.find({条件},{name:1,_id:0})
    • 1._id默认会显示,置为0不显示
    • 2.出了_id之外的其他字段,如果不显示,不写,不能写为0

      $group的注意点

  • $group对应的字典中有几个键,结果中就有几个键
  • 分组依据需要放到_id后面
  • 取不同的字段的值需要使用$,$gender,$age
  • 取字典嵌套的字典中的值的时候$_id.country
  • 能够同时按照多个键进行分组{$group:{_id:{country:"$country",province:"$province"}}}
    • 结果是:{_id:{country:"",province:""}

编辑器写mongodb语句

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
db.stu.find(
{$or:[{age:{$gte:20}},{hometown:{$in:["桃花岛","华⼭"]}}]}
)

#按照gender进行分组,获取不同组数据的个数和平均年龄
db.stu.aggregate(
{$group:{_id:"$gender",count:{$sum:1},avg_age:{$avg:"$age"}}},
{$project:{gender:"$_id",count:1,avg_age:"$avg_age",_id:0}}
)
# 按照hometown进行分组,获取不同组的平均年龄
db.stu.aggregate(
{$group:{_id:"$hometown",mean_age:{$avg:"$age"}}}
)
#使用$group统计整个文档
db.stu.aggregate(
{$group:{_id:null,count:{$sum:1},mean_age:{$avg:"$age"}}}
)
#选择年龄大于20的学生,观察男性和女性有多少人
db.stu.aggregate(
{$match:{$or:[{age:{$gt:20}},{hometown:{$in:["蒙古","⼤理"]}}]}},
{$group:{_id:"$gender",count:{$sum:1}}},
{$project:{_id:0,gender:"$_id",count:1}}
)
db.tv3.aggregate(
{$group:{_id:{country:"$country",province:"$province",userid:"$userid"}}},
{$group:{_id:{country:"$_id.country",province:"$_id.province"},count:{$sum:1}}},
{$project:{country:"$_id.country",province:"$_id.province",count:1,_id:0}}
)

mongodb的增删改查如何操作

    • db.collection.insert() #_id相同会报错
    • db.collection.save() #_id相同会更新其余的字段
    • db.collection.remove({},{justOne:ture})
  • 更新
    • db.collection.update({},{$set:{name:"a"}},{multi:true})
  • 查询
    • db.collection.find({})
    • db.collection.find({}).pretty()

mongodb统计数量,mongodb的投影操作

  • db.collection.count({})
  • db.collection.find({}).count
  • 投影:设置返回的字段
  • db.collection.find({},{_id:0,name:1})

mongodb的比较运算符(大于,小于等于等),范围运算符(in,not in),逻辑运算符(and ,or)

  • 大于,大于等于 $gt,$get
  • $lt,$lte 小于,小于等于
  • $ne 不等于

  • $in

    • db.collection.find({name:{$in:["a","b","c"]}})
  • 不在 $nin

    • db.collection.find({name:{$nin:["a","b","c"]}})
    • db.collection.find({name:"a",age:20})
  • or
    • bd.collection.find({$or:[{name:"a"},{age:20}]})

mongodb的排序和消除重复

  • 排序

    • db.collection.find({}).sort({age:1})
  • distinct

    • db.collection.distinct(“gender”,{age:{$gt:18}})
    • 返回数组

聚合操作的分组和计数如何使用,如何修改输出数据的样式,

  • 分组
    • db.collection.aggregate({$group:{_id:"$age",count:{$sum:1}}})
  • $project
    • db.collection.aggregate( {$group:{_id:"$age",count:{$sum:1}}}, {$project:{_id:0,age:"$_id",count:1}} )

聚合操作如何匹配内容

  • $match
    • db.collection.aggregate( {$match:{gender:true}, {$group:{_id:"$age",count:{$sum:1}}}, {$project:{_id:0,age:"$_id",count:1}} )