mongodb 基本常用操作

服务启动

服务启动
mongod --config /usr/local/etc/mongod.conf

客户端启动 
mongo        
客户端退出
exit   control+C

数据库相关操作

查看当前的数据库:db

查看所有的数据库:show dbs  /show databases

切换数据库:use db_name    (如果没有就创建该数据库)

删除当前的数据库:db.dropDatabase()

 

集合相关操作

不手动创建集合

向不存在的集合中第⼀次加⼊数据时, 集合会被创建出来

手动创建结合

db.createCollection(name,options)

db.createCollection("stu")

# db.createCollection("sub", { capped : true, size : 10 } )

# 参数capped: 默认值为false表示不设置上限,值为true表示设置上限

# 参数size: 当capped值为true时, 需要指定此参数, 表示上限⼤⼩,当⽂档达到上限时, 会将之前的数据覆盖, 单位为字节

查看集合:show collections

删除集合:db.集合名称.drop()

 

monog相关数据类型

Object ID: ⽂档ID

String: 字符串, 最常⽤, 必须是有效的UTF-8

Boolean: 存储⼀个布尔值, true或false

Integer: 整数可以是32位或64位, 这取决于服务器

Double: 存储浮点值

Arrays: 数组或列表, 多个值存储到⼀个键

Object: ⽤于嵌⼊式的⽂档, 即⼀个值为⼀个⽂档

Null: 存储Null值

Timestamp: 时间戳, 表示从1970-1-1到现在的总秒数

Date: 存储当前⽇期或时间的UNIX时间格式

简单的增删改查

db.集合名称.insert(document)

db.stu.insert({name:'gj',gender:1})

db.stu.insert({_id:"20170101",name:'gj',gender:1})

插⼊⽂档时, 如果不指定_id参数, MongoDB会为⽂档分配⼀个唯⼀的ObjectId

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

# db.集合名称.update(<query> ,<update>,{multi: <boolean>})

# 参数query:查询条件

# 参数update:更新操作符

# 参数multi:可选, 默认是false,表示只更新找到的第⼀条记录, 值为true表示把满⾜条件的⽂档全部更新

db.stu.update({name:'hr'},{name:'mnc'})   把name 为hr的整条数据替换为mnc,hr原有的其他键值对也会没有

db.stu.update({name:'hr'},{$set:{name:'hys'}})    把name 为hr的数据中name的值更新为为hys,更新一条,这个才是常用的操作

db.stu.update({},{$set:{gender:0}},{multi:true})   更新全部

注意:"multi update only works with $ operators"

# db.集合名称.remove(<query>,{justOne: <boolean>})

# 参数query:可选,删除的⽂档的条件

# 参数justOne:可选, 如果设为true或1, 则只删除⼀条, 默认false, 表示删除多条

`db.tv.remove({name:"xiaoming"},{justOne:true})`

db.集合名称.find()

高级查询 

条件查询

# db.集合名称.find({条件⽂档})

查询年龄为10 的: db.stu.find({age:10})

查询年龄为10 ,只返回一条数据  db.stu.findone({age:10}) 

查年龄为10的数据,格式化输出 :db.stu.find({age:10}).pretty()

比较运算符

  • 等于: 默认是等于判断, 没有运算符
  • ⼩于:$lt (less than)
  • ⼩于等于:$lte (less than equal)
  • ⼤于:$gt (greater than)
  • ⼤于等于:$gte
  • 不等于:$ne

查询年级大于等于18的 : db.stu.find({age:{$gte:18}})

逻辑运算符

  • and:在json中写多个条件即可
  • or:使⽤$or, 值为数组, 数组中每个元素为json

and -->查询年龄⼤于或等于18,且性别为true的学⽣

db.stu.find({age:{$gte:18},gender:true})

or -->查询年龄⼤于18,或家乡在leshan的学⽣

db.stu.find({$or:[{age:{$gt:18}},{hometown:"leshan"}]})

 

  • 查询年龄⼤于18或性别为男⽣, 并且姓名是小明

db.stu.find({$or:[{age:{$gte:18}},{gender:true}],name:'xiaoming'})

范围运算符

  • 使⽤"$in", "$nin" 判断是否在某个范围内

查询年龄为18、 28的学⽣

db.stu.find({age:{$in:[18,28]}})

正则表达式使用

  • 使⽤//或$regex编写正则表达式

查询姓⻩开头的学⽣

db.stu.find({name:/^⻩/})

db.stu.find({name:{$regex:'^⻩'}})

limit 和skip使用

  • ⽅法limit(): ⽤于读取指定数量的⽂档

db.集合名称.find().limit(NUMBER)

查询2条学⽣信息

db.stu.find().limit(2)

  • ⽅法skip(): ⽤于跳过指定数量的⽂档

db.集合名称.find().skip(NUMBER)

db.stu.find().skip(2)

  • 同时使用 类似于翻页操作

db.stu.find().limit(4).skip(5)或 db.stu.find().skip(5).limit(4)

注:建议先skip 再使用limit

投影--->选择返回结果的字段

在查询到的返回结果中, 只选择必要的字段

db.集合名称.find({},{字段名称:1,...})

参数为字段与值, 值为1表示显示, 不写不显示

特殊: 对于_id列默认是显示的, 如果不显示需要明确设置为0

db.stu.find({},{_id:0,name:1,gender:1})

sort 和count

⽅法sort(), ⽤于对 集进⾏排序

db.集合名称.find().sort({字段:1,...})

#参数 1 ---->升序排列

#参数 -1-----> 降序排列

根据性别降序, 再根据年龄升序

db.stu.find().sort({gender:-1,age:1}

 

⽅法count()⽤于统计结果集中⽂档条数

db.集合名称.find({条件}).count()

db.集合名称.count({条件})

db.stu.find({gender:true}).count()

统计stu集合里,年龄大于20的,gender 为true 的个数

db.stu.count({age:{$gt:20},gender:true})

去重distinct()

方法distinct()对数据进⾏去重  ----> 返回一个数组

db.集合名称.distinct('去重字段',{条件})

stu集合中年龄大于18 的 人hometown来自哪里 

db.stu.distinct('hometown',{age:{$gt:18}})

 

备份和还原

备份的语法:
    mongodump -h dbhost -d dbname -o dbdirectory
-h: 服务器地址, 也可以指定端⼝号
-d: 需要备份的数据库名称
-o: 备份的数据存放位置, 此⽬录中存放着备份出来的数据

恢复语法:
     mongorestore -h dbhost -d dbname --dir dbdirectory
-h: 服务器地址
-d: 需要恢复的数据库实例
--dir: 备份数据所在位置
 

备份

mongodump -h 192.168.196.128:27017 -d test1 -o ~/Desktop/test1bak

还原

mongorestore -h 192.168.196.128:27017 -d test2 --dir ~/Desktop/test1bak/test1
 

 

 

 

posted @ 2019-06-09 10:18  周零开  阅读(18)  评论(0)    收藏  举报