查询操作:
db.stu.find() //查询所有数据
db.stu.findOne() //查询一个数据
db.stu.find().pretty() //查询之后,格式化显示
db.stu.find({title:'html'}) //查询title为html的
db.stu.find({age:{$gte:18}}) //查询年龄大于等18的学生 逻辑与
db.stu.find({title:'python',count:{$gt:2}}) //查询title为python并且count大于2的 逻辑或
db.stu.find({$or:[{title:'python'},count:{$gt:2}]})//查询title为python 或者count大于2 in 或者 not in
db.stu.find({count:{$in:[1,2]}}) //查找count为1或者2的
db.stu.find({count:{$nin:[1,2]}}) //查找count不1或者2的 支持正则表达式
db.stu.find({name:/^黄/}) //查找名字以黄开头的 与js正则一样
db.stu.find({name:{$regex:"^黄"}}) //与上面等价 自定义查询函数(js函数)
db.stu.find({$where:function(){return this.age>20}})//与js一样,返回age大于20的数据
db.stu.find({$where:function(){return this.name.startwith('黄')}})//中间的函数是js代码,也就是说js字符串的函数都能被使用 limit用于读取指定数量的文档
skip用于跳过指定数量的文档
db.stu.find().limit(5) //读取返回的5条数据
db.stu.skip(2) //跳过2条数据,也就是从第三条数据开始显示 db.stu.skip(5).limit(5)//跳过前5条,从第6条开始显示接下来的5条数据 投影:查询结果中,只返回选择的字段
如:一个文档有5个字段,只显示前面3个
db.stu.find({查询条件},{name:1})//默认情况下_id是显示的,不想其显示,可以将_id设置为0
name:1说明显示name字段
db.stu.find({},{_id:0,name:1,age:1})//显示name和age 排序
默认排序是根据objectid进行的
sort{属性a:1,属性b:-1}
1为升序,-1降序
db.stu.find().sort({age:1})
db.stu.find().sort({age:-1})//按照age降序排序 统计个数
count()
db.stu.find({条件}).count()
db.stu.find({age:{$gt:20}}).count()//查询年龄大于20
db.stu.count({age:{$gt:20}}) //查询年龄大于20 数据去重
db.stu.distinct('去重字段',{条件})
db.stu.distinct('gender',{age:{$gt:20}})//对gender进行去重 聚合(用于统计)
主要计算数据
db.集合.aggregate([{管道:{表达式}}])
常用管道:
$group:将集合中文档分组
$match:过滤数据
$project:修改输入文档的结构,如重命名,增加删除字段,创建计算结构
$sort:将输入文档排序后输出
$limit:限制聚合管道返回的文档数
$skip:跳过指定文档的数量
$unwind:将数组类型的字段进行拆分
表达式
语法: '$列名' 常用表达式
$sum
$avg
$min $max
$push
$first $last db.stu.aggregate([
{
$group:{
_id:'$gender',//基于哪个字段进行分组.这里是基于gender进行分组
# _id:null,//将整个集合文档分为一组
# counter:{$sum:1}//counter为结果的名字,$sum计算分组中的个数
# counter:{$sum:'$age'},
# counter:{$first:'$gender'},
# counter:{$push:'$age'},//将分组的结果放到数组中(只存放每个文档的age属性)
# counter:{$push:'$$ROOT'},//将分组的结果放到数组中(将整个文档push到数组中)
}
}
]) db.stu.aggregate([
{
$match:{age:{$gt:20}, //查询年龄大于20},
$group:{
_id:"$gender",
counter:{$sum:'$age'} //把查询年龄大于20,作为分组的下一次数据
}
}
]) db.stu.aggregate([
{$match:{age:{$gt:20}, //查询年龄大于20}}
{$group:{
_id:"$gender",
counter:{$sum:'$age'} //把查询年龄大于20,作为分组的下一次数据
}},
{$project:{_id:0,counter:1}},
]) db.stu.aggregate([
{$match:{age:{$gt:20}, //查询年龄大于20}}
{$group:{
_id:"$gender",
counter:{$sum:'$age'} //把查询年龄大于20,作为分组的下一次数据
}},
{$project:{_id:0,counter:1}},
{$sort:{counter:1}},
]) db.stu.aggregate([
{$match:{age:{$gt:20}, //查询年龄大于20}}
{$group:{
_id:"$gender",
counter:{$sum:'$age'} //把查询年龄大于20,作为分组的下一次数据
}},
{$project:{_id:0,counter:1}},
{$sort:{counter:1}},
{$skip:1},//跳过去1个
]) db.stu.aggregate([
{$match:{age:{$gt:20}, //查询年龄大于20}}
{$group:{
_id:"$gender",
counter:{$sum:'$age'} //把查询年龄大于20,作为分组的下一次数据
}},
{$project:{_id:0,counter:1}},
{$sort:{counter:1}},
{$skip:1},//跳过去1个
{$limit:1},//取出一个
]) db.stu.insert({_id:1,title:'t-shirt',size:['M','L','S']})
db.stu.aggregate([
{$unwind:'$size'}//将size字段进行拆分
#{_id:1,title:'t-shirt',size:'M'}
#{_id:2,title:'t-shirt',size:'L'}
#{_id:3,title:'t-shirt',size:'S']}
])
拆分遇到null 空 没有 三种情况会出现数据丢失,解决办法 db.stu.insert({_id:1,title:'t-shirt',size:[]})
db.stu.insert({_id:2,title:'t-shirt'})
db.stu.insert({_id:3,title:'t-shirt',size:null})
db.stu.aggregate([
{$unwind:{path:'$size',preserverNullAndEmptyArrays:true}}//将size字段进行拆分
]) 采用角色-用户-数据管理方式
常用系统角色:
root:超级权限
read:允许用户读
readwrite:允许读写
常见超级管理员
use admin
db.createUser({
user:"admin",
pwd:'',
roles:[{role:'root',db:'admin'}]
})
默认没有授权,要修改配置文件
mongo -u admin -p 123 --authenticationDatabase test1 流程:
创建超级管理员
修改配置文件,启用身份验证
重启服务
使用超级管理员登陆
创建普通用户
使用普通用户登录 复制(副本集)
工作原理
设置复制

MongoDB 记录的更多相关文章

  1. 使用MongoDB 记录业务日志

    最近公司有个需求,要对业务日志进行记录并根据日志排查问题,以前都是使用log4net之类的日志组件来记录到文件,这种方式已经不能满足业务的需要,因为日志文件会很大,即使进行分割后,查找也是很不方便,何 ...

  2. MongoDB记录(坑在末尾)

    Mongo数据库基本配置 基本配置 密码配置 pymongo认证 参考资料 基本配置 基本配置包括 1.端口号:默认27017,安全性较低 2.数据库文件位置 3.日志文件位置 4.日志写入模式 5. ...

  3. CentOS 6.5下通过yum安装MongoDB记录

    安装MongoDB 1.创建repo vi /etc/yum.repos.d/mongodb-org-3.6.repo   [mongodb-org-3.6]   name=MongoDB Repos ...

  4. MongoDB系列(一):简介及安装

    什么是MongoDB MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统. 在高负载的情况下,添加更多的节点,可以保证服务器性能. MongoDB 旨在为应用提供可扩展的高 ...

  5. MongoDB学习笔记—Linux下搭建MongoDB环境

    1.MongoDB简单说明 a MongoDB是由C++语言编写的一个基于分布式文件存储的开源数据库系统,它的目的在于为WEB应用提供可扩展的高性能数据存储解决方案. b MongoDB是一个介于关系 ...

  6. MongoDB安装说明以及MongoVUE使用

    简单介绍mongoDb MongoDB是一个基于分布式文件存储的数据库.由C++语言编写.旨在为WEB应用提供可扩展的高性能数据存储解决方案. MongoDB是一个介于关系数据库和非关系数据库之间的产 ...

  7. mongoDB global,startUplog

    1,show logs (Ruiy看到一些人干些事就跟拉shit一样(磨叽),就来气,娃儿的,还不知所谓,抱怨,叫器一大堆!!!,喝喝,就这它还三心二意学一个故事中的主人公小小明上课偷打`皮卡`玩,三 ...

  8. 什么是MongoDB、特点、历史、下载和工具

    什么是MongoDB ?MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.MongoDB 旨在为WEB应用提供可扩展 ...

  9. MongoDB数据模型(一)

    原文地址 一.数据模型介绍 MongoDB中的数据有着灵活的架构.与SQL数据库不同,因为SQL数据库必须先定义表结构,然后才能向其中插入数据,而MongoDB的集合不强制任何文档结构.这个灵活性方便 ...

随机推荐

  1. InnoDB 引擎独立表空间

    InnoDB 引擎独立表空间   使用过MySQL的同学,刚开始接触最多的莫过于MyISAM表引擎了,这种引擎的数据库会分别创建三个文件:表结构.表索引.表数据空间.我们可以将某个数据库目录直接迁移到 ...

  2. ASP.NET 前台Javascript调用后台代码 / 后台调用前台Javascript

    1:ASP.NET 前台Javascript调用后台代码 1.1:前台Javascript <script> function CallCs() { var str = "< ...

  3. 网络流最大流(拆点)(附带kuangbin最大流模板)(目测这个题有bug)

    题目链接:https://vjudge.net/contest/68128#problem/H 我觉得这个题有bug,如果饮料和食物都为0,但是同时有五个人什么也不需要,按道理来讲,最多受益的人数为5 ...

  4. lucene总结——(十七)

    (01)rownum和rowid有何区别?      rownum在表结构中是看不见的,只能在select中明确写出rownum方可显示      rownum与不同的表绑定在一起,每张表都有自已的r ...

  5. 如何禁止Linux内核的-O2编译选项【转】

    转自:http://blog.csdn.net/larryliuqing/article/details/8674274 http://lenky.info/2013/03/10/%E5%A6%82% ...

  6. jumpserver安装教程

    centos7系统一步一步安装jumpserver 参照官方文档,查找了百度所有的文档,基本上都是按照官方的文档操作的 官方文档点我-> 安装jumpserver需注意: 1:网络环境要好,有的 ...

  7. geoserver 启动闪退

    跟JDK版本有关: 比如geoserver2.11需要JDK版本为JDK1.8 windows配置两个jdk环境: 网上有方法,但如果只需要满足geoserver的话,可以只安装jdk(注意jdk和j ...

  8. 使用html+css+js实现3D相册

    使用html+css+js实现3D相册,快来上传的照片吧 效果图: 代码如下,复制即可用: <!DOCTYPE html> <html lang="en"> ...

  9. IPC对象的持续性

    转载:http://book.51cto.com/art/201006/207275.htm <UNIX网络编程:第2版.第2卷,进程间通信>本书全面深入地讲解了各种进程间通信形式,包括消 ...

  10. SQL Server 2000中查询表名,列名及字段类型

    经常碰到一些忘记表名称的情况,此时只记得个大概,此时可通过查询系统表Sysobjects找到所要的表名,如要查找包含用户的表名,可通过以下SQL语句实现, Select * From sysobjec ...