《MongoDB 入门篇》笔记,
安装与配置
手动安装
curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz
tar -zxvf mongodb-linux-x86_64-3.0.6.tgz
cd mongodb(mv mongodb-linux-x86_64-3.0.6.tgz mongodb)
mkdir data log conf #创建配置目录
cd conf
vim mongod.conf #创建配置文件
port=12345
dbpath=data
logpath=log/mongodb.log
fork=true
自动安装
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 # 导入key
echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list # 创建一个MongoDB列表
sudo apt-get update # 更新
sudo apt-get install -y mongodb-org #安装
#日志文件
/var/lib/mongodb/mongd.log
启动MongoDB
# 手动安装启动方式
./bin/mongod -f conf/mongod.conf # 启动Mongodb服务,-f指定配置文件
# tail log/mongo.log #此时可以看到正在等待连接
./bin/mongo 127.0.0.1:12345/test #连接本地服务器/端口号/数据库
# 自动安装启动方式
pgrep mongo -l # 查看mongodb是否启动
service mongod status
service mongod start
service mongod stop
service mongod restart
mongo
基本使用
mongo -version # 查看版本信息
use admin
db.shutdownServer() #退出
show dbs #显示数据库
use test #选择/创建数据库
db.dropDatabase() #删除当前数据库
db #显示当前数据库
db.test_col.insert({x:1}) #插入(创建集合)
var_insert = {a:1, b:3}
db.test_col.insert(var_insert) #通过变量形式插入
db.test_col.insertMany([document1, document2,...]) #多条插入
db.test_col.drop() #删除test_col集合
show collections #显示集合
db.test_col.find() #查询所有数据,id字段自动生成,可以指定,但不能重复
db.test_col.find({y:1}) #查询指定数据
db.test_col.find().count() #计数
for(i=3;i<10;i++)db.test_col.insert({x:i}) #支持shell循环
db.test_col.find().skip(2).limit(3).sort({x:1}) #跳过,限制,排序
db.test_col.update({x:1},{$set:{x:10}}) # 部分更新x
db.test_col.update({y:100}, {y:999}, true) #true表示若{y:100}不存在就插入{y:999}
db.test_col.update({x:1}, {$set:{x:2}}, false, true) #多条记录更新
db.test_col.remove({x:2}) #删除
db.test_col.remove({}) #删除所有数据
索引
四个属性:name,unique,spare,过期索引
默认name值为key1_value1_key2_value2_…,即key+”_”+value
db.test_col.getIndexes() # 查看索引
db.test_col.ensureIndex({x:1,y:1}, {name:"x"}, {unique:true} ) # 设置索引
db.test_col.dropIndex({x:1,y:1})
db.test_col.dropIndex("x") # 删除索引
db.test_col.insert({x:10, y:1})
db.test_col.insert({x:10, y:1}) # 报错,设置unqiue:true,要求记录唯一
db.test_col.ensureIndex({x:1}, {sparse:true}) #sparse:true,无论记录是否含有x:1,都给该记录添加索引
db.test_col.find({x:{$exists:true}}) # 找到含x的记录
db.test_col.find({x:{$exists:false}}).hint("x_1") #强制按照"x_1"索引来搜索
_id索引:集合默认索引,对于每一个插入的数据,Mongodb都会自动生成一条唯一_id字段
单键索引:创建一个单键索引db.test_col.ensureIndex({x:1})
多键索引:创建一个多键索引db.test_col.ensureIndex({x:(1,2)})
复合索引:db.test_col.ensureIndex({x:1, y:2})
过期索引:
db.test_col.ensureIndex({time:1}, {expireAfterSeconds:10}),db.test_col.insert({time:new date()})
- 过期索引的字段值必须是指定的时间类型IOSdata或IOSdata数组.
- 一旦索引过期,相应的数据就删除,即10秒后time:new date()数据被删除.
- 如果指定了IOSdata数组,安装最近的时间算起,过期索引不能是复合索引.
全文索引
每一个集合只允许创建一个全文索引
对字符串或字符串数组创建全文索引
db.test_col.ensure({"article":"text"})
db.test_col.find({$"text":{"$search":"aa bb -cc"}})
# aa bb之间的空格表示逻辑或,-cc表示不查找cc
db.test_col.find({$"test":{$"search":"\"aa\" \"bb\"}})
# "aa" "bb"用“”表示逻辑与
函数
function add(r1, r2){
return r1+r2;
}
地理位置索引
2D索引的表示方式:[经度,纬度];取值范围经度[-180,180],纬度[-90,90]
插入时,经度不合法会报错,但是纬度不合法不会
db.location.ensureIndexes({"w":"2d"}) # 创建2d地理位置索引
db.location.find({w:{$near:[1,1]}, $maxDistance:10}}) # near按照距离查询,查找距离[1,1],并限定最大距离为10的左右坐标位置
db.location.find({w:{$geoWithin:{$box:[[0,0],[20,20]]}}}) #geoWithin按照形状查询,box[[x0,y0],[x1,y1]]表示一个矩形
- 顶
- 0
- 踩
- 0
本站文章为和通数据库网友分享或者投稿,欢迎任何形式的转载,但请务必注明出处.
同时文章内容如有侵犯了您的权益,请联系QQ:970679559,我们会在尽快处理。