过完年之后,给自己定了学习计划,打算学习下 mongodb
数据库,那么现在开始学起来~
基本操作
1 | > use table; // 选择数据库 |
CRUD 操作
insert
1 | > db.demo.insert({name: "a1", 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 | > db.demo.dropIndex({a: 1}); // 删除某个索引 |
explain
分析索引使用情况1
> db.demo.find().explain();
©版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 & 作者信息。
End