MongoDB 命令使用

288 阅读3分钟

MongoDB 常用的命令

> help                          查看帮助

查看帮助

> show dbs                      显示所有存在的数据库

> use dbname                    创建或是切换数据库 dbname是自己要创建或切换的数据库的名称

如果数据库不存在,则创建数据库dbname,否则切换到指定数据库dbname。use的数据库并不在数据库的列表中,要显示它,我们需要向数据库dbname插入一些数据,否则会看不见这个数据库,因为空数据的数据库会被系统自动清除。

> show collections              显示数据库中的所有集合

增加数据

> db.web.save({"name":"老李"})                  创建了名为web的集合,并新增了一条{"name":"老李"} 的数据
> db.web.insert({"name":"ghost", "age":10})    在web集合中插入一条新数据,如果没有web这个集合,mongodb会自动创建

save()和insert()也存在着些许区别:若新增的数据主键已经存在,insert()会不做操作并提示错误,而save() 则更改原来的内容为新内容。

_id是主键,主键是每条数据的唯一标识,不能重复,就像身份证是每个人唯一的编号一样。

存在数据:{ _id : ObjectId("57e8d34b4764fb71	d0a89caa"), " name " : " 老李"} ,_id是主键
> insert({ _id : ObjectId("57e8d34b4764fb71d0a89caa"), " name " : " 老王 " })       会提示错误

save(ObjectId("57e8d34b4764fb71d0a89caa"), " name " : " 老王 " })  会把 “老李” 改为 “老王” ,有update的作用

删除数据

  • 删除数据

    db.users.remove({})                         删除users集合下所有数据
    db.users.remove({"name": "lecaf"})          删除users集合下name=”lecaf”的数据
    
  • 删除集合

    db.users.drop()或db.runCommand({"drop":"users"})       删除集合users
    
  • 删除数据库

    db.runCommand({"dropDatabase": 1})          删除当前数据库,注意 此处的1没加双引号。
    

查找数据

db.users.find()             查找users集合中所有数据

查找所有数据

db.users.findOne()          查找users集合中的第一条数据
db.users.find().pretty()	格式化查询到的数据
  1. 固值查找

    db.users.find({name:"wscats"})  查找users集合里面属性name的值为wscats的所有文档结果
    
  2. 范围查找

    db.users.find({"age":{$lt:50}})         查找age 小于 50             $lt <
    db.users.find({"age":{$lte:50}})        查找age 小于等于50          $lte <=
    db.users.find({"age":{$gt:50}})         查找age 大于 50             $gt  >
    db.users.find({"age":{$gte:50}})        查找age 大于等于50          $gte >=
    db.users.find({"age":{$ne:50}})         查找age不等于50             $ne !=
    
  3. 排序 sort()

    db.students.find().sort({age: -1 })        属性为age的值按降序排列显示
    

降序排列

db.students.find().sort({age: 1 })         属性为age的值按升序排列显示

升序排列
4. 读取指定数量的值 limit()

db.students.find().limit( 2 )

截取2条数据

  1. 跳过指定数量的数据 skip()
    db.students.find().skip( 2 )
    

跳过3条数据

修改数据

db.students.update({"name":"aa"}, {$set: {sex:"men"}},true,true)

修改name=aa的数据为sex=men,第一个参数是查找条件,第二个参数是修改内容,主键不能修改,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据

修改数据

MongoDB 高级命令

条件查找

  学习用命令的意义在于:我们做系统的时候,后端人员需要给前端开发人员提供数据,如果后端人员用可视化工具,只是他自己眼睛能看到,但是如果要把这些数据提供给前端,他需要用代码去查数据库,把查询的结果返回给前端。
  为此,给大家整理了下以下这些常见的查询例子,如果以后忘记了,就可以翻出来看看。
  提前做了一个歌手的json数据,我们可以把他导入到数据库,练习查找命令。

数据库
语法1:db.collection.find({ "key" : value }) 查找 key=value 的数据。
例1:查找女歌星。
思路:查找sex=”女”的歌星。
具体命令:
查找女歌星

语法2: db.collection.find({"key" :{ $gt: value }}) 查找key > value 的数据
例2:查找年龄大于53的歌星。

查找年龄大于53的歌星

语法3:db.collection.find({"key" :{$lt: value }}) 查找key < value的数据
例3:查询年龄小于35岁的歌星。

查询年龄小于35岁的歌星

语法4:db.collection.find({"key":{ $gte: value}}) 查找 key >= value 的数据
例4:查询成绩大于等于95的歌星。

查询成绩大于等于95的歌星

语法5:db.collection.find({ "key" :{$lte: value }}) 查找 key <= value 的数据
例5:查询年龄在小于等于32岁的歌星。

查询年龄在小于等于32岁的歌星

语法6:db.collection.find({ "key" :{$gt:value1 , $lt: value2}}) 查找 value1 < key < value2 的数据
例6:查找年龄在30-40岁之间的歌星。

查找年龄在30-40岁之间的歌星

语法7:db.collection.find({ "key":{$ne: value }}) 查找 key != value 的数据
例7:查询外国歌手。
分析:条件为 country不等于”中国”

查询外国歌手

语法8:db.collection.find({"key":{ $mod : [ 10 , 1 ]}}) 取模运算,条件相当于key % 10 == 1 即key除以10余数为1的
例8:查询成绩为5 、15、25、。。。。95的歌星。

查询成绩为5 、15、25、。。。。95的歌星

语法9:db.collection.find({"key":{ $in: [ 1, 2, 3 ] } }) 属于,条件相当于key等于[ 1, 2, 3 ]中任何一个。
例9:查询序号(num)为3或者6或者9的歌星。

查询序号(num)为3或者6或者9的歌星

语法10: db.collection.find({"key":{$nin: [ 1, 2, 3 ]}}) 不属于,条件相当于key的值不属于[ 1, 2, 3 ]中任何一个。
例10:查询国籍不为美国和韩国的歌手。

查询国籍不为美国和韩国的歌手

语法11:db.collection.find({ "key": { $size: 1 }})
$size 数量、尺寸,条件相当于key对应的值的数量是1(值必须是数组)
这个有点难理解,通过例子理解容易些:每个歌星都有代表作,并且代表作是数组。
例11:查询有3个代表作品的歌手。

查询有3个代表作品的歌手

语法12:db.collection.find({ "key": { $exists : true|false}})
$exists 字段存在,true返回存在字段key的数据,false返回不存在字段key的数据
例12-1:查询包含tel字段的数据。
之前的数据字段都是一样的,此时插入一条数据{"name":"test","tel":"15388889999"} 然后查询:

查询包含tel字段的数据

例12-2 :查询不包含tel字段的数据

查询不包含tel字段的数据

语法13:db.collection.find({ $or : [{a : 1}, {b : 2} ] })
符合两个条件中任意一个的数据。$or语法表示或的意思。(注意:MongoDB1.5.3后版本可用),符合条件a=1的或者符合条件b=2的数据都会查询出来。
例13:某个娱乐公司15个人,资料都在数据库里面,某个活动必须要刘德华参加,另外需要团队的全部女歌手配合演出,领导安排你帮忙打印歌手的资料。

符合两个条件中任意一个的数据