现在详细学习一下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. windows下面安装redis

    一.下载windows版本的Redis 链接:https://pan.baidu.com/s/1i6X2klv 密码:j4pi 二.安装Redis 这里下载的是Redis-x64-3.2.100版本, ...

  2. 第203天:js---Array对象常用方法

    1.shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined //shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefined var arr ...

  3. 第107天:Ajax 实现简单的登录效果

    使用 Ajax 实现简单的登录效果 Ajax是一项使局部网页请求服务器信息,而不需整体刷新网页内容的异步更新技术.这使得向服务器请求的数据量大大减少,而且不会因局部的请求失败而影响到整体网页的加载. ...

  4. 第76天:jQuery中的宽高

    Window对象和document对象的区别 1.window对象表示浏览器中打开的窗口 2.window对象可以省略,比如alert()也可以写成window.alert() Document对象是 ...

  5. 51nod-1227-平均最小公倍数

    题意 定义 \(n\) 的平均最小公倍数: \[ A(n)=\frac{1}{n}\sum _{i=1}^n\text{lcm}(n,i) \] 求 \[ \sum _{i=L}^RA(i) \] \ ...

  6. bzoj4032-最短不公共子串

    题意 给出两个长度小于等于2000的小写字母串,四个问题: A的最短子串不是B的子串 A的最短子串不是B的子序列 A的最短子序列不是B的子串 A的最短子序列不是B的子序列 分析 虽然求的是不公共,但是 ...

  7. 英文报道:China challenged Australian warships in South China Sea, reports say

    学习地道新闻英语表达,以下文章来自CNN By Ben Westcott and Jamie Tarabay, CNN Updated 0830 GMT (1630 HKT) April 20, 20 ...

  8. 基于ORM实现用户登录

    1. 与数据库中的数据进行比较,检验用户名和密码是否正确. 2. 拿到的是QuerySet类型,类似于一个列表.验证成功/失败,返回到不同的页面. u = request.POST.get('user ...

  9. Qt浅谈之总结(整理)

    Qt浅谈之总结(整理) 来源 http://blog.csdn.net/taiyang1987912/article/details/32713781 一.简介 QT的一些知识点总结,方便以后查阅. ...

  10. 洛谷 P2659 美丽的序列 解题报告

    P2659 美丽的序列 题目背景 GD是一个热衷于寻求美好事物的人,一天他拿到了一个美丽的序列. 题目描述 为了研究这个序列的美丽程度,GD定义了一个序列的"美丽度"和" ...