mongoDB学习笔记

本文涉及的产品
云数据库 MongoDB,独享型 2核8GB
推荐场景:
构建全方位客户视图
简介: mongoDB学习笔记

基本命令

1.连接mongodb

mongo 远程主机ip或DNS:MongoDB端口号/数据库名 -u user -p password
e.g.: mongo 192.168.1.200:27017/test -u user -p password
若在安装mongo的服务器上访问本地mongo,可直接执行 mongo 


2.shell基本操作命令

show dbs:显示数据库列表 
show collections:显示当前数据库中的集合(类似关系数据库中的表) 
show users:显示用户
use <db name>:切换当前数据库,这和MS-SQL里面的意思一样 
db.help():显示数据库操作命令,里面有很多的命令 
db.foo.help():显示集合操作命令,同样有很多的命令,foo指的是当前数据库下,一个叫foo的集合(表),并非真正意义上的命令 
db.foo.find():对于当前数据库中的foo集合进行数据查找(由于没有条件,会列出所有数据) 
db.foo.find( { a : 1 } ):对于当前数据库中的foo集合进行查找,条件是数据中有一个属性叫a,且a的值为1
db.foo.find({a:1},{column:0}) :后面的大括号代表返回字段过滤,column为列名,0代表只去掉该字段,1代表只保留该字段


3.增

db.foo.insert({ "userId" : "testcustomer"})


4.删

--删除指定条件的数据
db.foo.remove({"userId" : "testcustomer"})
--清空表
db.foo.remove({})
--删除表
db.foo.drop()
--删除数据库
db.dropDatabase()
--注意,删除操作是永久性的,不可恢复的,所以删除前应该使用find确认删除数据
--另,mongodb删除集合后磁盘空间不释放,用db.repairDatabase()去修复才能释放。但是在修复的过程中如果出现了非正常的mongodb的挂掉,再次启动时启动不了的,需要先修复才可以,可以利用./mongod --repair --dbpath=/data/mongo/,如果你是把数据库单独的放在一个文件夹中指定dbpath时就指向要修复的数据库就可以,修复可能要花费很长的时间,在使用db.repairDatabase()去修复时一定要停掉读写,并且mongodb要有备机才可以,不然千万不要随便使用db.repairDatabase()来修复数据库,切记。
回收磁盘空间可以参考:http://blog.csdn.net/mchdba/article/details/8894344


5.改

db.foo.update({"userId" : "ordinary"},{'$set':{"usermail" : "2012@qq.cn"}})

6.查

–此处主要记录特殊查询,mongodb语句和mysql sqlserver不同

大于,小于,大于等于,小于等于

$gt 大于   >
$lt 小于    <
$gte  大于等于  >=
$lte  小于等于  <=
e.g. 
db.collection.find({age:{$gt:18}});  //年龄大于不包含18岁
SQL:SELECT * FROM Collection WHERE age>18


不等于

$ne 不等于 noe equals
e.g. 
db.collection.find({age:{$ne:18}})  ;//年龄不等于18

in , not in

--in,not in
$in,$nin
e.g.
db.collection.find({field:{$in:array}});
db.collection.find({field:{$nin:array}});


是否存在

$exists
e.g.
db.collection.find({title:{$exists:true}});  //如果记录中有包含title属性的全部返回
db.collection.find({title:{$exists:false}}); //如果记录中有包含title属性的全部不返回,不包含title属性的全部返回


正则表达式

db.collection.find( { name : /acme.*corp/i } ); // 后面的i的意思是区分大小写
• 1

非查询

$not
e.g. 
db.collection.find( { name : { $not : /acme.*corp/i } } );

匹配内数组内的元素

$elemMatch
e.g.
如果对象有一个元素是数组,那么$elemMatch可以匹配内数组内的元素
> t.find( { x : { $elemMatch : { a : 1, b : { $gt : 1 } } } } ) 
{ "_id" : ObjectId("4b57833003340000999"),"x":[{"a":1,"b":3},7,{"b":99}, {"a":11}]}
$elemMatch : { a : 1, b : { $gt : 1 } } 所有的条件都要匹配上才行。
区别于
t.find( { "x.a" : 1, "x.b" : { $gt : 1 } } )
$elemMatch是匹配{ "a" : 1, "b" : 3 },而后面一句是匹配{ "b" : 99 }, { "a" : 11 } 


springBoot项目Mongodb中GridFS实现文件上传和下载

参考课程:


千峰 https://www.bilibili.com/video/BV1xz4y1X7cE?p=30&t=594

黑马 https://www.bilibili.com/video/BV1bJ411x7mq?p=7&t=88


相关实践学习
MongoDB数据库入门
MongoDB数据库入门实验。
快速掌握 MongoDB 数据库
本课程主要讲解MongoDB数据库的基本知识,包括MongoDB数据库的安装、配置、服务的启动、数据的CRUD操作函数使用、MongoDB索引的使用(唯一索引、地理索引、过期索引、全文索引等)、MapReduce操作实现、用户管理、Java对MongoDB的操作支持(基于2.x驱动与3.x驱动的完全讲解)。 通过学习此课程,读者将具备MongoDB数据库的开发能力,并且能够使用MongoDB进行项目开发。 &nbsp; 相关的阿里云产品:云数据库 MongoDB版 云数据库MongoDB版支持ReplicaSet和Sharding两种部署架构,具备安全审计,时间点备份等多项企业能力。在互联网、物联网、游戏、金融等领域被广泛采用。 云数据库MongoDB版(ApsaraDB for MongoDB)完全兼容MongoDB协议,基于飞天分布式系统和高可靠存储引擎,提供多节点高可用架构、弹性扩容、容灾、备份回滚、性能优化等解决方案。 产品详情: https://www.aliyun.com/product/mongodb
相关文章
|
存储 JSON NoSQL
【BackEnd--Mongodb】学习笔记(完整详细版)
MongoDB是一种面向文档的非关系型数据库,所谓的面向文档是一种类似JSON的结构,因此可以简单理解MongoDB存储的是各种各样的JSONMongoDB可以快速开发web型应用,因为存储的是JSON格式,因此无需像关系型数据库那样需要建表,非常的的灵活。
271 0
|
存储 监控 NoSQL
MongoDB 快速入门-MongoDB 最佳实践(二)|学习笔记
快速学习 MongoDB 快速入门-MongoDB 最佳实践(二)
480 0
MongoDB 快速入门-MongoDB 最佳实践(二)|学习笔记
|
NoSQL 算法 Linux
MongoDB学习笔记(五) 集群搭建之副本集
MongoDB学习笔记(五) 集群搭建之副本集
416 0
|
NoSQL Linux MongoDB
MongoDB学习笔记(四) 集群搭建之主从复制
MongoDB学习笔记(四) 集群搭建之主从复制
601 0
|
分布式计算 NoSQL MongoDB
MongoDB学习笔记(三) 聚合
MongoDB学习笔记(三) 聚合
133 0
|
JSON NoSQL 关系型数据库
MongoDB学习笔记(二) 增删改查
MongoDB学习笔记(二) 增删改查
196 0
|
NoSQL 数据可视化 Linux
MongoDB学习笔记(一) 安装配置
MongoDB学习笔记(一) 安装配置
980 0
|
存储 缓存 NoSQL
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
快速学习 Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存
Spring Boot2.5 实战 MongoDB 与高并发 Redis 缓存|学习笔记
|
存储 SQL JSON
走进 MongoDB|学习笔记
快速学习走进 MongoDB
238 0
走进 MongoDB|学习笔记
|
SQL 存储 分布式计算
MongoDB 聚合框架|学习笔记
快速学习 MongoDB 聚合框架
430 0
MongoDB 聚合框架|学习笔记