前言
去年我还折腾过mongodb,后来用不到也就没碰了,这就导致了我忘的一干二净,不得不感叹,编程这东西只要不用,就会忘没了。现在我想重拾mongodb,来总结一下常用命令,主要就是增删改查。
另外,关于mongodb数据的安装配置,我就不赘述了,推荐我之前写过的两篇博客:
这是我的博客园文章,还是有人看的,哈哈,不像这里都没人看。
启动数据库
如果你还不会,看完我上面推荐的就会了~
我自己目前的平台是mac,由于我是通过homebrew安装的,所以我的启动步骤是:1
2
3brew services start mongodb
mongo
当你在浏览器页面看到下面这句,就说明启动成功了:1
It looks like you are trying to access MongoDB over HTTP on the native driver port.
更多安装教程可以自行搜索,接下来我们就来看看一些常用命令。
创建数据库
创建之前,我们看看当前有哪些数据库,使用:1
show dbs
接下来创建一个新的数据库:1
2
3
4
5
6
7// 使用这个数据库,没有则会创建
use test
// 此时还没有创建成功,只有在其中创建一个集合时,这个新数据库才会创建成功
db.user.insert({"name":"wj","age":18})
// 上面命令在test数据库里新建了一个user集合,并插入了数据,此时再执行show dbs ,已经有了test数据库
插入(增加)数据
前面已经提及了,格式如下:1
db.集合名.insert({"name":"wj"})
注意在使用这条命令前,要切换到对应数据库,比如:1
use test
这样新增的集合就在这个数据库下,可以使用命令:1
show collections
来查看当前数据库下有哪些集合
删除
删除当前数据库
1
db.dropDatabase()
删除集合
1
db.集合名.drop()
删除数据
1
2
3
4db.集合名.remove(条件)
// 比如要删除user集合下name为wj的数据,则
db.user.remove({"name":"wj"})
修改
修改前要按条件查找的,例如我要把名为小明的同学的年龄修改为3岁,那么命令如下:1
2
3
4db.user.update({"name":"小明"}, {$set:{"age":3}})
// 上面命令的格式
db.集合名.update({条件}, {$set:{修改的值}})
注意花括号不要写错,另外加上$set
是修改,如果不加的话,就是后面的替换前面的,如:1
2
3
4
5
6
7
8// 修改前
{ "name":"小明"}
// 修改
db.user.update({"name":"小明"},{"age":20})
// 修改后
{ "age":20}
默认情况下,只会修改满足条件的第一条数据,如果希望修改所有满足条件的数据,加上{multi:true}
,如:1
db.user.update({"sex":"男"}, {$set:{"age":30}}, {multi:true})
查找
关于查询的方式就比较多啦。
查询集合下所有数据
1
db.user.find() //user是集合名
查询 age == 20 的数据
1
db.user.find({"age":20})
查询 age > 20 的数据 (大于)
1
db.user.find({"age":{$gt:20}})
查询 age < 20 的数据 (小于)
1
db.user.find({"age":{$lt:20}})
查询 age >= 30 的数据 (大于或等于)
1
db.user.find({"age":{$gte:20}})
查询 age <= 30 的数据 (小于或等于)
1
db.user.find({"age":{$lte:20}})
查询 age >= 20 并且 age <= 30 的数据 (且)
1
db.user.find({"age":{$gte:20,$lte:30}})
查询 name 中包含 wj 的数据
1
db.user.find({"name":/wj/})
查询 name 中以 w 开头的数据
1
db.user.find({"name":/^w/})
查询指定列的数据
1
2
3
4
5
6
7
8// 只查看name列
db.user.find({},{"name":1})
// 只查看age列
db.user.find({},{"age":1})
// 只查看name和age列
db.user.find({},{"name":1,"age":1})查询指定列的数据,带条件(age > 20)
1
db.user.find({"age":{$gt:20}},{"name":1,"age":1})
排序
1
2
3
4
5// 按照年龄来排序
db.user.find().sort({"age":1}) // 升序
db.user.find().sort({"age":-1}) // 降序多条件查询
1
2
3db.user.find({"name":"wj","age":20})
// 应该好理解,查询同时满足这两个条件的数据,前面忘记说了查询前三条数据
1
db.user.find().limit(3)
查询五条之后的数据
1
2
3db.user.find().skip(5)
// 好理解,跳过前5条,显示的就是五条之后的数据查询 5-10 之间的数据
1
db.user.find().skip(5).limit(5)
或 查询
1
db.user.find({$or:[{"age":20},{"age":30}]})
查询第一条数据
1
2
3
4db.user.findOne()
//这样也可以哦
db.user.find().limit(1)
总结
我将遇到的增删改查命令都总结出来了,可能还有漏掉的,如果有人可以告诉我,那最好不过了。不过上面列出的基本够用了,如果上面的哪条命令不可实现,请注意符号是否写对,尤其是花括号的书写。如果真是我的错误,谁能告诉我一声呢?可惜,这里没人看啊。。。。。。