MongoDB安装配置和基本CURD索引等操作

本文详细介绍了MongoDB的基本操作,包括插入、查找、更新和删除数据,以及如何通过索引优化提高查询效率。

参考:http://www.cnblogs.com/huangxincheng/archive/2012/02/18/2356595.html

启动:

mongod.exe --dbpath=D:\ProgramFiles(x64)\mongodb2.4.9\db   # (要先建好db文件夹)

查看信息: 

mongodb采用27017端口,那么我们就在浏览器里面键入"http://localhost:27017/",   打开后,mongodb告诉我们在27017上Add 1000可以用http模式查看mongodb的管理信息。

基本操作:(采用json的二进制格式bson)

shell中打开客户端mongo 默认连接到test数据库

在集合上进行操作

①insert

db.person.insert({"name":"fk", "age":24})
db.person.insert("name":"kittengp", "age":24)

这里person就是集合

②find

"_id": 这个字段是数据库默认给我们加的GUID,目的就是保证数据的唯一性

db.person.find({"name":"fk"})
db.person.find() # 全部匹配

③update

update第一个参数是查找条件,第二个参数是更新的值

db.person.update({"name":"fk"}, {"name":"fk", "age":25})

④remove

remove中如果不带参数将删除所有数据,呵呵,很危险的操作,在mongodb中是一个不可撤回的操作

db.person.remove({"name":"fk"})

---------------------------------------更多CURD-------------------------------------------

①find=>更多条件查询

(i)"$gt"(>), "$gte"(>=), "$lt"(<), "$lte"(<=), "$ne"(!=), "无特殊关键字"(=)

db.person.find({"age":{$gt:22}}) # 查询age>22的person

(ii)"无特殊关键字", "$or", "$in", "$nin" 

db.person.find({$or:[{"address":"zhengzhou"}, {"address":"xinyang"}]})
db.person.find({"address":{$in:["zhengzhou", "xinyang"]}})

(iii)正则匹配

db.person.find({"name":/^f/})

(iv)$where => 使用js

db.person.find({$where:function(){return this.name=="flyking"}})

②update 两种更新方式

(i)整体更新

上面介绍的update属于这种

(ii)局部更新

要使用 = >修改器: $inc 和 $set

db.person.update({"name":"flyking"}, {$inc:{"age":-1}}) # inc => 增量
db.person.update({"name":"flyking"}, {$set:{"age":24}}) # set => 设置为

(iii)***更新,如果没有就插入,只需把update的第三个参数设为true

db.person.update({"name":"zhangsan"}, {$set:{"age":24}}, true)

----------------------------------索引优化-----------------------------------

先插入10w条记录

db.person.remove()
for(var i = 0;i < 100000;i++){
    db.person.insert({"name":"fk_"+i, "age":i})
}

性能分析函数 explain

db.person.find({"name":"fk_"+99999}).explain()
# "millis" : 35 => 耗时35ms 很慢的

查看集合有哪些索引 getIndexes

db.person.getIndexes()

(i)普通索引 ensureIndex

db.person.ensureIndex({"name":1}) # 把name字段建立一个索引,1表示按name升序, -1表示降序
db.person.find({"name":"fk_"+88888})
# "millis" : 0 = > 小于1ms 非常快

(ii)唯一索引 ensureIndex的第二个参数设为 {"unique":true},表示键值唯一(类似mysql的id字段唯一)

***建立唯一索引后,重复的键值不能插入了

db.person.ensureIndex({"name":1}, {"unique":true})

(iii)组合索引 

例如:如果查询条件是 name=fk_88888, age=36886,这时就需要组合索引

**我们只需把name,age都加上索引,mongodb系统自动使用组合索引来查询

(iv)删除索引dropIndexes

db.person.dropIndexes("name_1")

-----------------------------------------常用管理操作--------------------------------------

查看所有数据库: show dbs

查看当前数据库: db

使用某个数据库: use test

查看所有collections: show collections

查看当前数据库所有方法: db,.help()


转载于:https://my.oschina.net/1123581321/blog/202522

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值