查询操作:
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. Xor Sum(HDU4825 + 字典树)

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4825 题目: 题意: 先给你n个数,再进行q次查询,每次查询数s与原来给的n个数异或和最大的数. 思 ...

  2. 61.volatile关键字

    volatile作用 volatile的作用是可以保持共享变量的可见性,即一个线程修改一个共享变量后,另一个线程能够读取到这个修改后的值. 先来看一个问题: 定义一个Task类 package com ...

  3. mogodb的安装与配置

    下载:https://www.mongodb.com/https://www.mongodb.com/ 安装:一直next,中间选择custom,选择自己的安装路径,最后安装成功. 配置:打开安装好的 ...

  4. Java NIO之拥抱Path和Files

    Java面试通关手册(Java学习指南)github地址(欢迎star和pull):https://github.com/Snailclimb/Java_Guide 历史回顾: Java NIO 概览 ...

  5. Python图片验证码降噪 — 8邻域降噪

    简介 图片验证码识别的可以分为几个步骤,一般用 Pillow 库或 OpenCV 来实现,这几个过程是: 1.灰度处理&二值化 2.降噪 3.字符分割 4.标准化 5.识别 所谓降噪就是把不需 ...

  6. 谈谈Linux内核驱动的coding style【转】

    转自:http://www.cnblogs.com/wwang/archive/2011/02/24/1960283.html 最近在向Linux内核提交一些驱动程序,在提交的过程中,发现自己的代码离 ...

  7. sql loader 控制文件使用十六进制分隔符

    最近项目中使用到了sql loader加载数据文件至数据库,提供的文件中使用了十六进制 7F5E 分隔符,在sql loader中如何加载呢? 经过查询实验后,控制文件ctl内容如下: load da ...

  8. Python解决八皇后问题的代码【解读】

    八皇后问题 来自于西方象棋(现在叫 国际象棋,英文chess),详情可见百度百科. 在西方象棋中,有一种叫做皇后的棋子,在棋盘上,如果双方的皇后在同一行.同一列或同一斜线上,就会互相攻击. 八皇后问题 ...

  9. An overview of gradient descent optimization algorithms (更新到Adam)

    Momentum:解快了收敛速度,同时也减弱了SGD的波动 NAG: 减速了Momentum更新参数太快 Adagrad: 出现频率较低参数采用较大的更新,对于出现频率较高的参数采用较小的,不共用一个 ...

  10. java基础56 HTML5的标签知识(网页知识)

    本文知识点(目录): 1.html常用标签    2.html实体标签    3.html媒体标签    4.html超链接标签    5.html图片标签    6.html标个标签 7.html框 ...