查询操作:
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. 莫队-小Z的袜子

    ----普通莫队 首先清楚概率怎么求假设我们要求从区间l到r中拿出一对袜子的概率sum[i]为第i种袜子在l到r中的数量 $$\frac{\sum_{i=l}^{r} {[sum[i] \times ...

  2. 解决Maven并行编译中出现打包错误问题的思路

    解决Maven并行编译中出现打包错误问题的思路 并行构建 Maven 3.x 提供了并行编译的能力,通过执行下列命令就可以利用构建服务器的多线程/多核性能提升构建速度: mvn -T 4 clean ...

  3. win7 64位mysql安装及navicat 解压版

    教程:http://jingyan.baidu.com/article/f3ad7d0ffc061a09c3345bf0.html Mysql修改设置root密码的命令及方法:http://jingy ...

  4. ADB常用命令(二)

    参考  http://adbshell.com/commands 常用命令 查看adb 版本 adb version 打印所有附加模拟器/设备的列表 adb devices 设备序列号 adb get ...

  5. Python匿名函数详解

    python 使用 lambda 来创建匿名函数. lambda这个名称来自于LISP,而LISP则是从lambda calculus(一种符号逻辑形式)取这个名称的. 在Python中,lambda ...

  6. html元素分类

    目录 块级元素 内联元素 内联块级元素  总结 一.块级元素(block) 定义:默认情况下,独占一行的元素就是块级元素. 特点: 每个块级元素都从新的一行开始,并且其后的元素也另起一行.(真霸道,一 ...

  7. java 使用内部类的理由

    每个内部类都能独立地继承自一个(接口的)实现,所以无论外围类是否已经继承了某个(接口的)实现,对于内部类都没有影响 内部类有效的实现了多重继承,也就是说,内部类允许继承多个非接口类型(类或抽象类) 如 ...

  8. TCP连接建立与断开

    tcp状态 LISTEN:侦听来自远方的TCP端口的连接请求 LISTEN:侦听来自远方的TCP端口的连接请求 SYN-SENT:再发送连接请求后等待匹配的连接请求 SYN-RECEIVED:再收到和 ...

  9. 触发器中的inserted表和deleted表

    触发器语句中使用了两种特殊的表:deleted 表和 inserted 表.Microsoft? SQL Server 2000 自动创建和管理这些表.可以使用这两个临时的驻留内存的表测试某些数据修改 ...

  10. Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value

    Effective STL 学习笔记 Item 38 : Design functor classes for pass-by-value */--> div.org-src-container ...