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() 格式化查询到的数据
-
固值查找
db.users.find({name:"wscats"}) 查找users集合里面属性name的值为wscats的所有文档结果 -
范围查找
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 != -
排序
sort()db.students.find().sort({age: -1 }) 属性为age的值按降序排列显示

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

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

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

修改数据
db.students.update({"name":"aa"}, {$set: {sex:"men"}},true,true)
修改name=aa的数据为sex=men,第一个参数是查找条件,第二个参数是修改内容,主键不能修改,第三个参数表示匹配所有符合条件的数据,第四个参数表示修改所有匹配到的数据

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

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

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

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

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

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

语法6:db.collection.find({ "key" :{$gt:value1 , $lt: value2}}) 查找 value1 < key < value2 的数据
例6:查找年龄在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的歌星。

语法9:db.collection.find({"key":{ $in: [ 1, 2, 3 ] } }) 属于,条件相当于key等于[ 1, 2, 3 ]中任何一个。
例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个代表作品的歌手。

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

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

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