启动mongodb:./bin/mongod -f conf/mongod.cof
Mongodb mongod.db 配置:
port = 12345
dbpath = data
logpath = log/mongod.log
fork = true
常用命令
./mongo 127.0.0.1:12345/test
show dbs
show collection
use admin
db.zrk_collection.insert({x:1})
for(i=3;i<100;i++) db.zrk_collection.insert({x:i})
db.zrk_collection.find()
db.zrk_collection.findOne({x:1})
db.zrk_collection.find().count()
db.zrk_collection.find().skip(3).limit(2).sort({x:1})
db.zrk.find({m:{$exists:true}}) 只查询有m字段的
db.zrk_collection.insert({x:1})
db.zrk_collection.update({x:3},{x:999}) 只会修改一条
db.zrk_collection.insert({x:100,y:100,z:100})
db.zrk_collection.update({z:100},{$set:{y:99}}) $set为部分更新符
db.zrk_collection.update({y:100},{y:99},true) 不存在的数据直接插入
db.zrk_collection.update({z:100},{$set:{y:99}},false,true) 会修改多条
db.zrk_collection.remove({x:999}) 不同update 可删除多条
db.zrk_collection.drop()
db.zrk_collection.getIndexes()
db.zrk_collection.ensureIndex({x:1}) 添加{x:1}的索引 还可以是-1代表排序方向
常见索引
索引 | 笔记 |
---|---|
_id索引 | 默认创建 |
单键索引 | 最普通的索引,在{x:1,y:2,z:3}中创建x:1的索引,需自己创建 |
多键索引 | 创建同单建索引。db.zrk_collection.insert({x:[1,2,3,4,5]}) 就会创建多键索引 |
复合索引 | 查询条件不止一个时需要建立复合索引 ,db.zrk_collection.ensureIndex({x:1,y:2}) |
过期索引 | 1、在一段时间后就过期的索引 2、索引过期后相应数据就会被删除 适合登陆信息 日志信息存储 , db.collection.ensureIndex({time:1},{expireAfterSeconds:10}) 3、存储过期缩影字段的值必须是指定的时间类型的值或数组, 不能是时间戳类型,否则不能自动删除 4、如果指定了ISODate数组,则按最小时间进行删除 db.zrk_collection.insert({time:new Date()}) 这样的数据或被删除db.zrk_collection.insert({time:1}) 这样的数据不会被删除5、过期索引不能是复合索引 6、删除时间不精确(60s运行一次的删除进程进行删除)“` |
全文索引 | db.集合.ensureIndex({key:"text"}) key是字段db.集合.ensureIndex({key:"text",key2:"test"}) db.集合.ensureIndex({"$**":"text"}) 对多有字段创建索引查询: db.集合.find({$text:{$search:"aa"}}) db.集合.find({$text:{$search:"aa bb"}}) 或关系db.集合.find({$text:{$search:"aa bb -cc"}}) 不包含ccdb.集合.find({$text:{$search:"\"aa\" \"bb\" "}}) 与关系全文索引相似度 $meta操作符: {score:{$meta:"testScore"}} 写在查询条件后面可以返回返回结果的相似度 与sort一起使用,可以达到很好的效果 db.zrk.find({$text:{$search:"aa bb"}},{score:{$meta:"textScore"}}).sort({score:{$meta:"textScore"}}) 返回 { "_id" : ObjectId("55a10179309ede361eea8b61"), "article" : "aa bb cc", "score" : 1.3333333333333333 } { "_id" : ObjectId("55a10181309ede361eea8b62"), "article" : "bb cc dd", "score" : 0.6666666666666666 } 全文索引限制 每次查询只能指定一个 $text 查询$text 查询不能出现$nor 查询中查询中如果包含了 $text ,hint不在起作用全文索引还不支持中文 |
地理位置索引 | 将一些点的位置存储,创建索引可以按照位置来查找其他点 子分类: 2d索引:用于存储和查找平面上的点。 2dsphere索引:用于存储和查找球面上的点。 查找方式: 查找距离某一点一定距离的点。 查找包含在某区域内的点。 创建方式: 2d: db.collection.ensureIndex({key:"2d"}) 位置表示方式:经纬度[经度,纬度] 取值范围:经度[-180,180] 纬度[-90,90] 查询方式: 1. $near :查询距离某点最近的点db.zrk2.find({w:{$near:[1,1]}}) 获取附件的点 默认查100个db.zrk2.find({w:{$near:[1,1],$maxDistance:10}}) 限定查10个,不支持minDistance2.geoWithin:查询某个形状的点 形状的表示: 2.1. $box 矩形:{$box:{[<x1>,<y1>],[<x2>,<y2>]}} 2.2 $center 圆形:{$center:[[<x1>,<y1>,r]]} 2.3 $polygon 多边形{$polygon:[[<x1>,<y1>],[<x2>,<y2>],[<x3>,<y3>]]} 例子 db.zrk2.find({w:{$geoWithin:{$box:[[0,0],[3,3]]}}}) |
索引属性
db.collection.ensureIndex({param},{param})
第二个参数便是索引的属性|
常用4个:
索引 | 笔记 |
---|---|
名字 | Name指定db.collection.ensureIndex({},{name,""}) 例子:db.zrk_collection.ensureIndex({x:1},{name:"normal_index1"}) |
唯一性 | Unique指定db.collection.ensureIndex({},{unique:true/false}) |
稀疏性 | Sparse指定db.collection.ensureIndex({},{sparse:true/false}) 不必为不存在字段创建索引 db.zrk.find({m:{$exists:true}}).hint("index_name") 强制使用索引是否定时删除 |
查看db中文件 db.fs.files.find()
创建备份 ./mongorestore -d imgs /data/mongdb_bak/imgs/
导入备份 ./mongorestore -d imgs /data/mongdb_bak/imgs/