Mongodb 学习笔记一

过完年之后,给自己定了学习计划,打算学习下 mongodb 数据库,那么现在开始学起来~

基本操作

1
2
3
4
> use table;    // 选择数据库
> show dbs; // 查看数据库
> show collections; // 查看 collections
> db.demo.drop(); // 删除 collection demo

CRUD 操作

insert

1
2
3
> db.demo.insert({name: "a1", age: 10});
> db.demo.insert({name: "a2", age: 20});
> db.demo.insert({name: "a3", age: 10});

select

查询满足条件全部数据

1
2
3
> db.demo.find();
> db.demo.find({age: 10});
> db.demo.find({age: {"$gt": 10}});

查询满足条件一条数据

1
2
> db.demo.findOne();
> db.demo.findOne({age: 10});

update

全部更新,将使用第二个参数替换原来的数据

1
> db.demo.update({name: "a1"}, {name: "aa"});

由于上面的语句会替换掉原来的数据,这是就需要出现部分更新操作,如下:

1
> db.demo.update({name: "a1"}, {$set:{name: "aa"}});

有时会出现更新时数据不存在,就将数据插入到数据库,如下:

1
> db.demo.update({name: "a100"}, {$set:{age: 30}}, true);

比如 collection 中存在 a=1 的数据为 3 条,那么使用 update 的时候,会更新一条,那么想全部更新的话,怎么处理呢?

1
2
3
4
5
6
7
> db.demo.insert({a: 1});
> db.demo.insert({a: 1});
> db.demo.insert({a: 1});
> db.demo.update({a: 1}, {a: 2});
> db.demo.find({a: 2});
> db.demo.update({a: 1}, {$set:{a: 2}}, false, true);
> db.demo.find({a: 2});

delete

删除的时候需要注意,这是硬删除,删除后数据将不存在。

1
2
> db.demo.remove({a: 2});
> db.demo.find({a: 2});

其他操作

sort

1
> db.demo.find().sort({age: 1});

pagination

分页一般的操作

1
> db.demo.find().skip(10).limit(10);

count

获取数据条数

1
> db.demo.count();

distinct

1
> db.demo.distinct("a");

索引管理

索引主要是为了提高查询速度,下面来看下 mongodb 是怎样管理索引的。

show index

1
> db.demo.getIndexes();

create index

单键索引

1
> db.demo.createIndex({a: 1});

自定义名称索引

1
> db.demo.createIndex({a: 1}, {name: "myIndex"});

唯一索引

1
> db.demo.createIndex({n: 1}, {unique: true});

全文索引

1
2
3
> db.demo.createIndex({title: "text"});
> db.demo.createIndex({title: "text", content: "text"});
> db.demo.createIndex({"$**": "text"});

rebuild index

删除掉全部索引并重新创建

1
> db.demo.reIndex();

remove index

1
2
> db.demo.dropIndex({a: 1});    // 删除某个索引
> db.demo.dropIndexes(); // 删除全部索引

explain

分析索引使用情况

1
> db.demo.find().explain();

©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息

End

坚持原创技术分享,您的支持将鼓励我继续创作!
Flyertutor WeChat Pay

WeChat Pay

Flyertutor Alipay

Alipay