mongodb基础



  • 属于NoSQL, 非关系型数据库

  • 内存级读写

  • C++开发的,运行稳定,性能高

  • 分布式 文档存储 (物理+内存)存储

  • collection 集合

  • document 文档(集合中的一个数据)

查看Ubuntu版本
cat /etc/issue
安装
1.导入软件源的公钥
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
2.为mongodb创建软件源list文件 (ubuntu16.04)
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
3.更新软件源并安装mongodb
sudo apt-get update
sudo apt-get install -y mongodb-org
4.配置启动文件

如果是ubuntu16.04的版本,需要手动新建/lib/systemd/system/mongod.service文件,并写入下面内容:

sudo vi /etc/mongod.conf    修改配置文件

# 退出: shift + : + q
[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target
Documentation=https://docs.mongodb.org/manual

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf

[Install]
WantedBy=multi-user.target
5.检测是否安装
ps ajx|grep mongod

启动服务器:

sudo mongod  启动服务器
sudo service mongod restart  重新启动

mongo  客户端
# sudo systemctl start mongod
db    查看当前数据库名称
db.stats()  查看当前数据库信息
show dbs   查看数据库
GUI:robomongo 图形界面

在图形界面写json

点击robomongo连接GUI

sudo tar -zxvf mongodb-linux-x86_64-ubuntu1404-3.2.4.tgz

创建集合

创建集合    db.createCollection('stu')
查看当前所有集合  show collections
删除集合    db.stu.drop()
添加数据    db.stu.insert({name:'gj',gender:true})
查找数据    db.stu.find()

数据类型:

ObjectID : 文档ID(会自动生成)
String : 字符串,最常用(UTF-8)
Boolean : 存储一个布尔值
Object : 用于嵌入式的文档,一个值为一个文档
Timestamp : 时间戳
更新
# 更新一条数据, 默认修改一条 (修该整个文档)  
db.stu.update({},{name:'gj1'})
# 多行修改 $set(只修改某个属性)
db.stu.update({},{$set:{name:'gj1'}})
删除
db.stu.remove({})   删除
也可以指定条件,删除符合条件的文档
size
  • 大小超过设置值后,会覆盖最老的值
查询
db.sub.findOne()

db.sub.find({title:'mongodb'})

运算符查询:
db.sub.find({count:{$gt:5}})   count>5的值

逻辑运算符  ,连接
db.sub.find({title:'css',count:{$gt:2}}) 

或 : {$or:[{}, {}]}
db.sub.find({$or:[{title:'css'},{count:{$gt:2}}]})

in(课时在1-3之间的)-->反:nin
db.sub.find({count:{$in:[1,3]}})

正则表达式
db.stu.find({name:/^李/})  查询姓李的学生

自定义查询
db.stu.find({$where:function(){return this.age>13}})      >13的学生

js查询以a开头的
db.stu.find({$where:function(){return this.name.indexOf('a')==0}})

查询包含b的
db.stu.find({$where:function(){return this.name.indexOf('b')>=0}})
limit和skip

结合使用,skip跳过几条

db.stu.find().limit(2)   显示2条数据

跳过3条之后显示2条数据
db.stu.find().limit(2).skip(3)
投影筛选

查询到的结果中,只选择必要的字段,不选择一个文档的整个字段

如果文档有3个字段,需要显示2个字段,投影2个字段就可以了

  • 1 结果中显示字段
  • 0 不显示
只显示name字段
db.stu.find({},{name:1,_id:0})
排序
  • 1 :升序
  • -1 :降序
按年龄从大到小排序
db.stu.find().sort({age:-1})

按姓名降序,再按年龄升序
db.stu.find().sort({name:-1, age:1})
统计个数
年龄大于13的总数
db.stu.count({age:{$gt:13}})
消除重复
db.collection_name.distinct(field,query,options)
field -----指定要返回的字段(string)
query-----条件查询(document)
options-----其他的选项(document)

# 去重age>1 , 显示name字段
db.stu.distinct('name',{age:{$gt:1}})

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值