MongoDB初学者笔记

一、MongoDB对比MySQL的优缺点

缺点

l 不支持事务操作

l 占用空间过大

l MongoDB没有如MySQL那样成熟的维护工具

l 无法进行关联表查询,不适用于关系多的数据

l 复杂聚合操作通过mapreduce创建,速度慢

| 模式自由, 自由灵活的文件存储格式带来的数据错误

优点

l 文档结构的存储方式,能够更便捷的获取数据

l 内置GridFS,支持大容量的存储

l 内置Sharding,分片简单

l 海量数据下,性能优越

l 支持自动故障恢复(复制集)

二、常用的命令

mongoDB开机命令

以管理员身份打开cmd,输入net start MongoDB,会提示我们请求的服务已经启动。

1.使用数据库、创建数据库

use 数据库名

若想创建一个数据库必须向数据库中插入一条数据

2.添加数据

db.student.insert({“name”:”xiaoming”});

数据库中不能直接添加数据,只能往集合中插入数据,集合不需要创建只需要用点语法,集合自动创建。

3.删除当前数据库

db.dropDatabase();

4.导入数据

我们不可能一条一条的insert。所以,我们希望用sublime在外部写好数据库的形式,然后导入数据库:

mongoimport --db test --collection restaurants --drop --file primer-dataset.json

-db test  想往哪个数据库里面导入

--collection restaurants  想往哪个集合中导入

--drop 把集合清空

--file primer-dataset.json  哪个文件

这样,我们就能用sublime创建一个json文件,然后用mongoimport命令导入,这样学习数据库非常方便。

5.查找数据find()

若find没有参数将列出这个集合的所有文档。

db.restaurants.find()

精确匹配

db.restaurants.find({"score.shuxue":70})

多个条件

db.restaurants.find({"score.shuxue":70,"sax":"男"})

大于条件

db.student.find({"score.yuwen":{$gt:50}});

6.修改数据:update()

查找名字叫做小明的,把年龄更改为16岁:

db.student.update({"name":"小明"},{$set:{"age":16}});

完整替换,不出现$set关键字了:

db.student.update({"name":"小明"},{"name":"大明","age":16});

7、删除数据:remove()

删除所有符合条件的数据

删除所有年龄为13的数据

 db.restaurants.remove( { "age": "13" } )

justOne:true只删除一条符合条件的数据

db.restaurants.remove( { "age": "13" } , { justOne: true } )

8、创建集合

db.createCollection(集合名)

9、删除集合

db.集合名.drop()

10、条件操作符

(>) 大于 - $gt
(<) 小于 - $lt
(>=) 大于等于 - $gte
(<= ) 小于等于 - $lte
判断相等
$ne ----------- not equal !=
$eq -------- equal =

获取年龄大于40的数据
db.col.find({age: {$gt : 40}})
获取年龄小于40的数据
db.col.find({age: {$lt : 40}})
获取年龄大于40小于50的数据
db.col.find({age: {$gt : 40,$lt : 50}})

11、模糊查询

查询 title 包含"教"字的文档:

db.col.find({title://})

查询 title 字段以"教"字开头的文档:

db.col.find({title:/^/})

查询 titl e字段以"教"字结尾的文档:

db.col.find({title:/教$/})

12、limit方法和skip方法

limit(显示条数)
skip(跳过条数)

以下实例只会显示第二条文档数据

db.col.find({},{"title":1,_id:0}).limit(1).skip(1)

13、排序sort()

sort({排序的字段:number})
number为1时,升序
number为-1时,降序

db.COLLECTION_NAME.find().sort({KEY:1})

skip(), limilt(), sort()三个放在一起执行的时候,执行的顺序是先 sort(), 然后是 skip(),最后是显示的 limit()。

14、索引

创建索引方法 createIndex()
语法中 Key 值为你要创建的索引字段,1 为指定按升序创建索引,如果你想按降序来创建索引指定为 -1 即可。

db.collection.createIndex(keys, options)

db.col.createIndex({"title":1})

1、查看集合索引

db.col.getIndexes()
2、查看集合索引大小

db.col.totalIndexSize()
3、删除集合所有索引

db.col.dropIndexes()
4、删除集合指定索引

db.col.dropIndex(“索引名称”)

15、聚合函数

db.COLLECTION_NAME.aggregate(AGGREGATE_OPERATION)

实例
db.mycol.aggregate([{$group : {_id : "$by_user", num_tutorial : {$sum : 1}}}])
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值