数据库的操作:

  创建数据库:

    use 库名

  查看系统数据库

    show dbs

    系统数据库有:admin:存储用户信息

              local:  存储本地数据

              config:存储分片信息

  删除数据库: db.dropDatabase()

  创建集合 :  db.createCollection(‘collection_name’)
         db.collecion_name.insert({...})

  删除集合 :  db.collection_name.drop()
  集合重命名: db.collection_name.renameCollection("new_name")
  查看集合:   show collections
         show tables

db : mongodb的全局量,代表当前正在使用的数据库


对集合的操作:

find(query,field)
功能 : 查找文档
参数 : query 查找条件,相当于where子句
    field 查找的域
返回值 : 查找到的所有文档


mac连接mongodb免费工具_mac连接mongodb免费工具

 find 的 

mac连接mongodb免费工具_mac连接mongodb免费工具_02

query : 以键值对方式传递参数,如果是空{}表示查找所          有内容

  e.g.  查找所有性别为w的文档  
        db.class0.find({sex:'w'})

field : 以键值对的方式给出要查找(不查找)的域
         以域名为键,以0,1为值分别表示不查找和查找

* 如果某一个或多个域设置为0 表示这些域不查找,其他域均查找
* 如果某一个或多个域设置为1 表示这些域查找,其他域均不查找
* _id 除非设置为0 否则均会查找
* 除_id域其他域不能有的设置1有的设置0
e.g. 查找结果只有name域
db.class0.find({sex:'w'},{_id:0,name:1})

findOne(query,field)
功能 : 查找第一条符合条件的文档
参数 : 同find
返回值: 返回查找到的文档

  e.g. 查找集合中性别为女的第一个文档
  db.class0.findOne({sex:'w'},{_id:0,name:1})


query更多的筛选用法

操作符 : 使用$符号注明的一个特殊字符串,表达一定的           含义,比如 $lt 表示小于

参数解释


mac连接mongodb免费工具_mac连接mongodb免费工具

mac连接mongodb免费工具_mac连接mongodb免费工具_02

query更多的筛选用法

操作符 : 使用$符号注明的一个特殊字符串,表达一定的 含义,比如 $lt 表示小于

比较操作符

$eq  等于 == 
 e.g. 查找年龄等于18
 db.class0.find({age:{$eq:18}},{_id:0})
 ==》db.class0.find({age:18},{_id:0})

$lt  小于  < 
 e.g. 查找年龄小于18的
 db.class0.find({age:{$lt:18}},{_id:0})
 db.class0.find({name:{$lt:"John"}},{_id:0})

* 在mongodb中字符串可以比较大小

$lte  小于等于  <= 
e.g.  年龄小于等于18 
db.class0.find({age:{$lte:18}},{_id:0})

$gt  大于  >

e.g.  查找年龄大于16 且 小于19
db.class0.find({age:{$gt:16,$lt:19}},{_id:0})

* 在mongodb中所有的{} [] 中都可以写多个条件。但根据参数的不同表达的意思不一样

$gte 大于等于 >= 
e.g.  大于等于19
db.class0.find({age:{$gte:19}},{_id:0})

$ne  不等于  !=
e.g.  性别不等于‘m’的 
db.class0.find({sex:{$ne:'m'}},{_id:0})

* 使用ne查找也会找到该域不存在的文档

$in  包含
e.g. 找到年龄为 [10,20,30]
 db.class0.find({age:{$in:[10,20,30]}},{_id:0})

$nin 不包含
e.g.  找到年龄不是 17  18   19 的
 db.class0.find({age:{$nin:[17,18,19]}},{_id:0})


逻辑操作符

$and
1. 在 query 如果写多个条件默认即为 and 关系
  e.g.
   db.class0.find({age:{$lt:18},sex:'m'},{_id:0})

2. 逻辑与 $and
  e.g. 年龄小于18并且 性别为男
   db.class0.find({$and:[{age:{$lt:18}},{sex:'m'}]},{_id:0})

$or  逻辑或
  e.g. 年龄小于16或者年龄大于18
  db.class0.find({$or:[{age:{$lte:16}},{age:{$gt:18}}]},{_id:0})

$not  逻辑非

e.g.  查找年龄不小于18岁的
db.class0.find({age:{$not:{$lt:18}}},{_id:0})

$nor   not  (a or b)  ===> (not a) and (not b)
 
e.g.  性别不是m且年龄不小于18
db.class0.find({$nor:[{sex:'m'},{age:{$lt:18}}]},{_id:0})

逻辑条件混合

(年龄大于17 并且 为男生)  或者 姓名叫 Abby
 db.class0.find({$or:[{age:{$gt:17},sex:'m'},{name:'Abby'}]},{_id:0})


(年龄不大于18 或者为 女性) 并且 姓名 大于Lucy
 e.g.
 db.class0.find({$or:[{age:{$not:{$gt:18}}},{sex:'w'}],name:{$gt:'Lucy'}},{_id:0})

query更多的筛选用法

 

insert()

mac连接mongodb免费工具_mac连接mongodb免费工具

mac连接mongodb免费工具_mac连接mongodb免费工具_02

db.collection.insert()
功能 : 插入一个文档
参数 : 要插入的文档

插入单个文档
e.g. 
db.class0.insert({'name':'Lucy',"age":18,"sex":'w'})
db.class0.insert({_id:1,name:'Jame',age:16,sex:'m'})

* 插入操作中键可以不加引号
* 查看插入结果 db.class0.find()
* _id 值可以自己插入,但是不能重复

插入多条文档
 插入多条文档时,参数用中括号里面放入多个文档

 e.g.
 db.class0.insert([{name:"Alex",age:19,sex:'m'},{name:'Abby',age:18,sex:'w'}])

其他插入方法

insertOne()  插入一条文档

db.class0.insertOne({name:"Levi",age:20,sex:'m'})

insertMany()  插入多条文档

db.class0.insertMany([{name:"John",age:16,sex:'m'},{name:"Lenzer",age:17,sex:'m'}])

insert 插入文档


save()

mac连接mongodb免费工具_mac连接mongodb免费工具

mac连接mongodb免费工具_mac连接mongodb免费工具_02

db.collection.save()
如果正常插入与insert用法相同
e.g.
db.class0.save({name:'Allen',age:19,sex:'m'})
db.class0.save([{name:"Sunny",age:17,sex:'w'},{name:'Alice',age:16,sex:'w'}])

如果插入数据是有_id域,且_id域值存在时则会修改原有文档,如果该值不存在则正常插入
db.class0.save({_id:2,name:'Mary',age:20,sex:'w'})

获取集合对象方法
db.class0  ===> db.getCollection('class0')

e.g.
db.getCollection("class0").find()

save插入文档


update()

remove()

 索引操作:


对文档中数组的操作:


数组修改器

$push  向数组中添加一项
  e.g.  给小红 score数组中添加一项91
  db.class1.update({name:'小红'},{$push:{score:91}})

$pushAll 向数组中添加多项
  e.g.
  db.class1.update({name:'小乔'},{$pushAll:{score:[94,10]}})

$pull 从数组中删除一项
   e.g.  从数组中删除一项
   db.class1.update({name:'小红'},{$pull:{score:78}})

$pullAll 从数组中删除多项
   e.g.
   db.class1.update({name:'小乔'},{$pullAll:{score:[92,10]}})

$each 对多个值逐个进行操作
 e.g.  分别插入99  10
 db.class1.update({name:'小乔'},{$push:{score:{$each:[99,10]}}})

$position 指定插入位置
  e.g.  将67 插入到数组1号位置
  db.class1.update({name:'小明'},{$push:{score:{$each:[67],$position:1}}})

$sort 数组排序
  e.g.  将说有score域的数组降序排序
  db.class1.update({},{$push:{score:{$each:[],$sort:-1}}},false,true)

$pop  弹出一项 1表示弹出最后一项  -1弹出第一项  
  e.g.  删除小明score中第一项
   db.class1.update({name:'小明'},{$pop:{score:-1}})

$addToSet 向数组中添加一项 但是不能添加重复的内容 
  e.g. 如果数组中没有81 则添加81
  db.class1.update({name:'小刚'},{$addToSet:{score:81}})