欢迎投稿

今日深度:

《MongoDB 入门篇》笔记,

《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
查看评论

www.htsjk.Com true http://www.htsjk.com/shujukunews/10077.html NewsArticle 《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)...
相关文章
    暂无相关文章
评论暂时关闭