现在详细学习一下mongodb的数据库操作。

查询语句

db.xxx(集合name).find() # 查询
db.xxx(集合name).findOne() # 只返回一个
db.xxx(集合name).findOne().pretty() # 返回结果格式化 # 比较运算符
等于,默认是等于判断,没有运算符,如:db.xxx(集合name).find({name:"xiao"})
小于$lt,如:db.xxx(集合name).find({age:{$lt:30}})
小于或等于$lte,如:db.xxx(集合name).find({age:{$lte:30}})
大于$gt,如:db.xxx(集合name).find({age:{$gt:30}})
大于或等于$gte,如:db.xxx(集合name).find({age:{$gte:30}})
不等于$ne,如:db.xxx(集合name).find({age:{$ne:30}}) # 逻辑运算符,即多条件查询
db.xxx(集合name).find({age:{$ne:30}, name:"xiaoming"}) # 默认逻辑与
db.xxx(集合name).find({$or:[{age:{$ne:30}, name:"xiaoming"}]}) # 默认逻辑或 # 范围查询
db.xxx(集合name).find({age:{$in:[18,30]}}) # 在某个范围
db.xxx(集合name).find({age:{$nin:[18,30]}}) # 不在某个范围 # 正则$regex
db.xxx(集合name).find({name:{$regex:"^x"}}) # 函数查询$where,使用this代表本集合
db.xxx(集合name).find({$where:function(){return this.age < 10}}) # 限制返回数量
db.xxx(集合name).find().limit(3)
# 查询偏移
db.xxx(集合name).find().skip(3) # 从第4条开始返回 # 循环
for(i=0;i<15;i++){db.xxx(集合name).insert({_id:i*2})} # 查询返回一些字段,需要返回设置1,不需要设置0
db.xxx(集合name).find({},{name:1,age:0}) # 排序sort(),1位升序,-1为降序
db.xxx(集合name).find().sort({name:-1})
# 返回个数count()
db.xxx(集合name).count({name:"xiaoming"})
# 去重
db.xxx(集合name).distinct("name",{})

聚合函数

  • 语法:db.集合名称.aggregate({管道:{表达式}})
# 管道
$group:将集合中的文档分组,可用于统计结果
$match:过滤数据,只输出符合条件的文档
$project:修改输入文档的结构,如重命名、增加、删除字段、创建计算结果
$sort:将输入文档排序后输出
$limit:限制聚合管道返回的文档数
$skip:跳过指定数量的文档,并返回余下的文档
$unwind:将数组类型的字段进行拆分 # 表达式
$sum:计算总和,$sum:1同count表示计数
$avg:计算平均值
$min:获取最小值
$max:获取最大值
$push:在结果文档中插入值到一个数组中
$first:根据资源文档的排序获取第一个文档数据
$last:根据资源文档的排序获取最后一个文档数据

索引

  • 1表示升序,-1表示降序

  • 语法结构:db.COLLECTION_NAME.ensureIndex(keys[,options])

keys,要建立索引的参数列表。如:{KEY:1},其中key表示字段名,1表示升序排序,也可使用使用数字-1降序。
options,可选参数,表示建立索引的设置。可选值如下: background,Boolean,在后台建立索引,以便建立索引时不阻止其他数据库活动。默认值 false。
unique,Boolean,创建唯一索引。默认值 false。
name,String,指定索引的名称。如果未指定,MongoDB会生成一个索引字段的名称和排序顺序串联。
dropDups,Boolean,创建唯一索引时,如果出现重复删除后续出现的相同索引,只保留第一个。
sparse,Boolean,对文档中不存在的字段数据不启用索引。默认值是 false。
v,index version,索引的版本号。
weights,document,索引权重值,数值在 1 到 99,999 之间,表示该索引相对于其他索引字段的得分权重。
# 创建普通索引
db.集合.ensureIndex({属性:1}) # 创建唯一索引,实现唯一约束的功能
db.集合.ensureIndex({"name":1},{"unique":true}) # 创建联合索引
db.集合.ensureIndex({name:1,age:1}) #查看集合所有索引
db.集合.getIndexes() # 删除索引
db.集合.dropIndex('索引名称')
db.集合.dropIndexs() # 删除集合所有的索引

MongoDB之数据库命令操作(二)的更多相关文章

  1. 每篇半小时1天入门MongoDB——4.MongoDB索引介绍及数据库命令操作

    准备工作 继续连接到mongo C:\Users\zouqi>mongo MongoDB shell version: 3.0.7 connecting to: test 查看数据库和集合 &g ...

  2. mongodb数据库添加权限及简单数据库命令操作笔记

    加固mongodb建议:修改数据库默认端口,添加数据库访问权限: 启动数据库(裸奔):C:\mongodb\bin>mongod --dbpath C:\MongoDB\data(同时用--db ...

  3. MongoDB常用数据库命令第三集

    show dbs 查看已经存在的数据库 use 数据库名 切换到指定的数据库(无论数据库是否存在 均可切换成功) db 查看当前数据库 db.getCollectionNames() 查看当前数据库下 ...

  4. MongoDB常用数据库命令第二集

    =======================基础命令======================= mongo 进入数据库操作界面db 查看当前使用的数据库show dbs 查看当前已经被创建出来的 ...

  5. sqlite3 数据库命令操作

    SQLite 数据库,是一个非常轻量级自包含(lightweight and self-contained)的DBMS,它可移植性好,很容易使用,很小,高效而且可靠. SQLite嵌入到使用它的应用程 ...

  6. MongoDB常用数据库命令第一集

    1.查询操作(1)Help查看命令提示helpdb.help()db.test.help()db.test.find().help()(2)创建/切换数据库use music(3)查询数据库show ...

  7. MongoDB学习笔记-06 数据库命令、固定集合、GridFS、javascript脚本

    介绍MongoDB支持的一些高级功能: 数据库命令 固定大小的集合 GridFS存储大文件 MongoDB对服务端JavaScript的支持 数据库命令 命令的原理 MongoDB中的命令其实是作为一 ...

  8. MongoDB学习笔记-数据库命令

    概念 数据库命令(database command)是一种非常特殊类型的查询.文档的创建.更新.删除及查询都属于数据库命令的范畴,它还包含管理性的任务(比如关闭服务器和克隆数据库).统计数据及执行聚合 ...

  9. MongoDB源码分析——mongod数据查询操作

    源码版本为MongoDB 2.6分支 Edit mongod数据查询操作 在mongod的初始化过程中说过,服务端接收到客户端消息后调用MyMessageHandler::process函数处理消息. ...

随机推荐

  1. SQL中的declare用法

    平时写SQL查询.存储过程都是凭着感觉来,没有探究过SQL的具体语法,一直都是按c#那一套往SQL上模仿,前几天项目中碰到一个问题引起了我对declare定义变量的作用域的兴趣. 大家都知道c#中的局 ...

  2. uva1391-Astronauts

    宇航员执行任务,有三个任务ABC.把宇航员按照平均年龄分成新老两组,老宇航员可以去AC,新宇航员可以取BC.宇航员之间有不能共存关系,问是否有合法的分配方案. 分析 虽然有三个任务,但每个宇航员还是只 ...

  3. Halum UVA - 11478(差分约束 + 二分最小值最大化)

    题意: 给定一个有向图,每条边都有一个权值,每次你可以选择一个结点v和一个整数d,把所有以v为终点的边的权值减小d,把所有以v为起点的边的权值增加d,最后要让所有边权的最小值非负且尽量大 两个特判 1 ...

  4. CF605E Intergalaxy Trips 贪心 概率期望

    (当时写这篇题解的时候,,,不知道为什么,,,写的非常冗杂,,,不想改了...) 题意:一张有n个点的图,其中每天第i个点到第j个点的边都有$P_{i, j}$的概率开放,每天可以选择走一步或者留在原 ...

  5. Unity3D for VR 学习(3): 暴风魔镜PC Input小改造–自己动手、丰衣足食

    在做手游的时候,80%时间是在PC调试的,例如业务逻辑.AI算法.核心玩法等. 拿到魔镜提供的demo,晕了,必须得安装到Android机器上,才能调试,究其原因,有三: 需要用到手机陀螺仪 需要用到 ...

  6. linux内核设计与实现一书阅读整理 之第一二章整合

    第一章:Linux内核简介 一.Unix和linux Unix是一个强大.健壮和稳定的操作系统. 1.Unix内核特点 十分简洁:仅提供几百个系统调用并且有明确的目的: 在Unix中,大部分东西都被( ...

  7. 代码收藏系列--javascript--移动端技巧

    JS判断是否是手机端访问: var is_mobi = navigator.userAgent.toLowerCase().match(/(ipod|iphone|android|coolpad|mm ...

  8. Hive(五)hive的高级应用

    一.视图 视图:享用基本表的数据,不会生成另外一份数据创建视图:create view view_name as select * from carss;create view carss_view ...

  9. Qt ------ CSS 长度单位

    1.         css相对长度单位 Ø         em          元素的字体高度 Ø         ex           字体x的高度 Ø         px        ...

  10. McNemar test麦克尼马尔检验

    sklearn实战-乳腺癌细胞数据挖掘(博主亲自录视频) https://study.163.com/course/introduction.htm?courseId=1005269003&u ...