mongodb 输出数组字段_MongoDb文档操作、索引操作
学习主题:MongoDb
学习目标:
- 掌握mongodb文档的更新
- 掌握mongodb文档的删除
- 掌握mongodb文档的查找
- 掌握mongodb文档的条件操作符
- 掌握mongodb中的索引操作
- Mongodb的更新方式
- Update()函数更新
- Save()函数更新
Mongodb的update更新?
Update用于更新已存在的文档(只更新更新内容中数据,文档数据易丢失)
语法格式:db.COLLECTION_NAME.update({查询条件},{更新内容},{更新参数(可选)})
Mongodb的更新操作符有哪些 都是什么意思?
$set (指定一个键,并更新键值,若不存在则创建)
db.dev.update({title:'语文小组'},{$set:{title:'物理小组'}})
使用multi参数实现批量更新操作
db.dev.update({title:'dev'},{$set:{size:'500'}},{multi:true})
$inc(数值类型):可以对文档的某个值为数值型(只能为满足要求的数字)的键进行增减操作
$unset 删除键
$push (数组类型的键)
db.dev.update({title:'dev'},{$push:{tags:'JAVA 大数据 AI'}})
$pop:(删除数据元素)
db.dev.update({title:'abc'},{$pop:{tags:1}}) //1表示从尾删
db.dev.update({title:'abc'},{$pop:{tags:-1}} //-1表示从头删
$pull 从数组中删除满足条件的元素
db.dev.update({title:'abc'},{$pull:{tags:'34'}})
$pullAll 从数据中删除满足条件的多个元素
$rename 对键重新命名
Mongodb的save()更新?
Save()方法通过传入的文档来替换已有文档
语法格式:save({文档})
例如:修改title并删除tag数组
db.dev.save({"_id" : ObjectId("5dbd292c503ed06c738dc15b"),title:'def'})
Mongodb删除文档的三种方式?
根据主键删除文档
db.dev.remove({"_id" : ObjectId("5dbd292c503ed06c738dc15b")})
如果使用的条件在集合中可以匹配多条数据,那么remove函数会删除所以满足条件的数据
db.dev.remove({title:"dev"},1)
Db.repairDatabase()回收磁盘空间(需要管理员账户)
DeleteOne()函数删除一条文档
DeleteMany()函数删除多条文档
删除集合中的所有文档
Remove({})
deleteMany({})
Mongodb如何实对文档的查询,请举例说明?
使用find()函数查询文档
Find({查询条件},{指定投影的键})
使用pretty()函数格式化显示
FindOne({查询条件},{指定投影的键}) 自带格式化显示
db.dev.find({title:/a/}) //查询标题含有a内容
db.dev.find({title:/^a/}) //查询以a开头
db.dev.find({title:/a$/})//查询以a结尾
Mongodb中的投影操作指的是?
投影键显示该列查询的结果
语法格式为:find({查询条件},{投影键名:1(显示该列)|0(不显示该列)})
db.dev.find({title:"dev"},{title:1})
条件运算符有哪些 分别什么意思?
$gt 大于
db.dev.find({size:{$gt:300}})
$lt 小于
db.dev.find({size:{$lt:300}})
$gte 大于等于
$lte 小于等于
$eq 等于
$ne 不等于
$and 并且
db.dev.find({$and:[{size:{$gt:100}},{size:{$lt:400}}]})
$or 或者
db.dev.find({$or:[{title:{$eq:'test2'}},{size:{$gt:300}}]})
$type 类型检索数据
db.dev.find({title:{$type:'number'}})
and和or如何联合使用?
db.dev.find({$or:[{$and:[{title:{$eq:'test5'}},{size:500}]},{size:{$lt:400}}]})
每页显示5条查看第5页的数据如何实现?
db.dev.find({},{title:1,_id:0}).skip(5).limit(5)
如何实现排序,两个条件如何排序 如年龄一致按照分数排序?
db.dev.find({size:{$type:'number'}},{title:1,size:1,_id:0}).sort({size:1})
如何创建索引?
db.dec.createIndex({title:1},{background:true})
如何查看索引?
db.dev.getIndexes()
db.dev.getIndexSpecs()
db.dev.getIndexKeys()
删除索引有几种方式,分别举例说明?
删除全部索引
db.dev.dropIndexes()
删除指定索引
db.dev.dropIndex(‘title_1’)
索引类型有哪些,有何作用?
单字段索引 在索引中只包含一个键,查询时,可加速对该字段的各种查询请求
交叉索引 一个集合的多个字段分别建立索引,在查询的时候通过多个字段作为查询条件。
复合索引 针对多个字段联合创建索引,满足多字段组合查询,也满足匹配符合索引前缀的查询
多key索引 多key索引会为数组的每个元素建立一条索引
文本索引
部分索引
db.dev.createIndex({size:1},{partialFilterExpression:{size:{$gt:300}}})
使用索引需要注意什么?
创建索引需要在管理员admin数据库下进行操作,不能有重复字段,出现重复字段则不能创建就会报错。
索引额外属性
db.dev.createIndex({title:1},{background:true,unique:true})
索引限制指的是?
额外开销:每个索引占据一定的存储空间,在进行插入,更新和删除操作时也需要对索引进行操作。所以,如果你很少对集合进行读取操作,建议不使用索引
内存(RAM)使用 由于索引是存储在内存(RAM)中,你应该确保该索引的大小不超过内存的限制。
如果索引的大小大于内存的限制,MongoDB会删除一些索引,这将导致性能下降
查询限制
索引不能被以下的查询使用:
正则表达式及非操作符,如 $nin, $not, 等。
算术运算符,如 $mod, 等。
$where 子句
所以,检测你的语句是否使用索引是一个好的习惯,可以用explain来查看。
索引键限制
插入文档超过索引键限制
如果文档的索引字段值超过了索引键的限制,MongoDB不会将任何文档转换成索引的集合。与mongorestore和mongoimport工具类似。
最大范围
集合中索引不能超过64个
索引名的长度不能超过128个字符
一个复合索引最多可以有31个字段
mongodb 输出数组字段_MongoDb文档操作、索引操作相关推荐
- mongodb 输出数组字段_三分钟 mongodb 开发快速上手
三分钟 mongodb 开发快速上手 小熊昨天晚上做了一个非常真实的噩梦,有读者朋友催我"怎么又没有发文!让我们等的好辛苦",今天一睁开眼眼看后台留言,特么,居然是真的! 我bil ...
- mongodb 输出数组字段_JMeter之Groovy对MongoDB操作
背景 使用Jmeter做接口测试时需要初始数据,需要连接数据库,然而我们的后端使用的是MongoDB. 操作步骤 2.1 导入将连接MongoDB 所涉及的jar包导入jmeter的扩展lib1)扩展 ...
- sharepoint当流程流转到某个节点对文档进行水印操作
sharepoint在流程中给文档库中的word或者pdf添加水印. 断断续续的搞了很久.总的解决方案如下: 在流程中,当运行到某步的时候,通过自定义代码调用后台方法,进行相关操作. 针对word的水 ...
- tensorflow 读取cifar_对tensorflow中cifar-10文档的Read操作详解
前言 在tensorflow的官方文档中得卷积神经网络一章,有一个使用cifar-10图片数据集的实验,搭建卷积神经网络倒不难,但是那个cifar10_input文件着实让我费了一番心思.配合着官方文 ...
- Word格式处理控件Aspose.Words for .NET教程——使用DocumentBuilder将字段插入文档
Aspose.Words for .NET是一种高级Word文档处理API,用于执行各种文档管理和操作任务.API支持生成,修改,转换,呈现和打印文档,而无需在跨平台应用程序中直接使用Microsof ...
- python连接mysql输出数据库结构docx文档
python连接mysql输出数据库结构docx文档-Python文档类资源-CSDN下载
- MongoDB查询集合中的文档
MongoDB查询集合中的文档 参考资料:http://blog.csdn.net/qq_36040184/article/details/54355085 测试: 集合中插入数据 > db.c ...
- PDF转TXT文档怎么进行操作
PDF文件转TXT文档怎么进行操作,我们在工作中会碰到PDF文件,在某种条件下我们就会将PDF文件转换成TXT文档,所以PDF转TXT文档的操作我们也是需要学会的,下面就是下边为大家介绍的PDF转TX ...
- 第六讲:BBdoc软件版本升级与文档内容索引更新操作
第六讲:BBdoc软件版本升级与文档内容索引更新操作
最新文章
- 比赛杀器LightGBM常用操作总结!
- config kubectl_使用kubectl管理k8s集群(三十)
- 研究生的早期科研之路
- 最长递增子序列问题合集
- 数字证书原理简单说明
- 【NLP】谷歌、伯克利联合研究:为5种大型NLP模型,彻底算算这笔账
- 开源 | 如何实现一个iOS AOP框架?
- ASP.NET页面事件详解
- 如何优雅处理 async await 错误——解读小而美的 await-to-js 库
- 【cocos2d-x从c++到js】08:JS脚本语言的优势与一些问题
- dubbo 与 zookeeper 的关系
- 使用ARGV在命令行里接收参数
- 好的技术文章应该让读者更自信而不是更自卑
- 贪心算法及几个常用的例题
- 腾达ap设置说明_腾达路由器怎么设置AP模式?
- LaTeX代码: 下划线与删除线 ← 利用 ulem 宏包
- Web 服务器配置和管理
- EBP与ESP的作用
- 微信小程序通过code去获取微信用户的加密信息
- html、css做一个带搜索图标的搜索框
热门文章
- idea 暂存文件或idea切换分支代码不见了
- SpringBoot集成Shiro前后端分离使用redis做缓存
- 02年六代雅阁的整备质量_2020年宝安第八批更新计划:联投地产5.4万㎡“工改”项目...
- oracle与db2 市场占有率,oracle 与 DB2 的区别
- micropython固件源码_Micropython加速物联网开发7 - Micropython源码编译与固件更新
- C/C++ _wcslwr_s 函数 – unicode 字符串大写转小写 - C语言零基础入门教程
- C语言 abort 函数 - C语言零基础入门教程
- CTF-MISC杂项题2
- node.js 实现udp传输_Node.js实战15:通过udp传输文件。
- html视频标签略缩图,JS可以截取video的标签视频缩略图吗?