MongoDB 在windows shell环境下的基本操作和命令的使用示例(四)
接上一篇文章继续《MongoDB 在windows shell环境下的基本操作和命令的使用示例(三)》
1,集合的嵌套,在testcoll集合中添加一个嵌套集合,其它的嵌套和下面一样
db.testcoll.insert({"name":"顶级","age":22,"salares":5000,"course":["语文","数学","英语","meishu"],"parents":[{"name":"父亲111","job":"juzhang","age":45},{"name":"母亲111","job":"juzhang1","age":35}]})
2,这样集合的操作就会变的特别复杂,所以在实际使用中建议数据的存储结构尽量简单
集合中判断某个字段是否存在$exists,可以对一些不需要的数据进行过滤
找出集合中parents存在的字段
db.testcoll.find({"parents":{"$exists":true}}).pretty()
找出parents不存在的字段
db.testcoll.find({"parents":{"$exists":false}}).pretty()
3,where条件判断$where,下面4种形式等效,都能得下面的代码
db.testcoll.find({"$where":"this.age>50"}).pretty()//不是很常用
db.testcoll.find("this.age>50").pretty()//上面的简化版本
db.testcoll.find(function(){//javescript代码
return this.age>50;
}).pretty()
db.testcoll.find({"$where":function(){//javescript代码
return this.age>50;
}}).pretty()
where的嵌套组合,where一般很少用
db.testcoll.find({"$and":[
{"$where":"this.age>20"},
{"$where":"this.age<30"}
]}).pretty()
4,模糊查询(正则运算)
基础语法: {key:正则标记}
完整语法:{key:{"$regex":正则标记,“options”:选项}}
i;忽略大小写
m,多行查找
x,空白数据忽略
s,匹配所有字符(圆点)
db.testcoll.find({"name":/张/}).pretty()//正则简写
db.testcoll.find({"name":{"$regex":/李/i}}).pretty()//正则完整表述,i表示不区分大小写
5,数据排序,前面博客已经讲过,这边只提一下,注意自然排序
db.testcoll.find().sort({"age":1}).pretty()//按年纪升序
db.testcoll.find().sort({"age":-1}).pretty()//按年纪降序
db.testcoll.find().sort({"$natural":1}).pretty()//按存入的先后自然排序1,升,-1,降
6,分页显示,也适合大数据skip(),limit(),前面讲过,这里不再重复
7,集合数据的更新操作,这种操作比较麻烦,save(),update();
mutil: false更新一个,true更新所有
将年纪18岁更新为100分,注意参数
db.testcoll.update({"age":18},{"$set":{"score":100}},false,false)//更新一个
db.testcoll.update({"age":18},{"$set":{"score":100}},false,true)//更新所有
增加操作
db.testcoll.update({"age":18},{"$set":{"name":"不存在"}},true,false)
db.testcoll.find({"age":18}).pretty(),显示结果如下
8,修改器,像$set,大概提供了10种修改器
$inc:增加某个数据字段的值
语法:{“$inc”:{"成员":“内容”}}
将年纪为18的分数减30的同时年纪加一岁
db.testcoll.update({"age":18},{"$inc":{"score":-30,"age":1}})
db.testcoll.find({"age":19}).pretty()
$unset:删除某个成员值
$push:将内容追加到指定地方(针对数组)
db.testcoll.update({"name":"张三"},{"$push":{"course":"语文"}})
db.testcoll.find({"name":"张三"}).pretty()
$addtoset
$pushall:可以一次追加多个到数组里面,代码运行两次结果
db.testcoll.update({"name":"李四"},{"$pushAll":{"course":["语文","英语","体育"]}})
db.testcoll.update({"name":"李四"},{"$pushAll":{"course":["语文","英语","体育"]}})
db.testcoll.find({"name":"李四"}).pretty()
$pop:删除数组数据
db.testcoll.update({"name":"李四"},{"$pop":{"course":1}})
db.testcoll.find({"name":"李四"}).pretty()
$pull:从数组中删除指定内容的数据
db.testcoll.update({"name":"李四"},{"$pull":{"course":"体育"}})
db.testcoll.find({"name":"李四"}).pretty()
、
$pullAll,一次删除多个数据
db.testcoll.update({"name":"李四"},{"$pullAll":{"course":["语文","英语"]}})
db.testcoll.find({"name":"李四"}).pretty()
$rename:重命名
db.testcoll.update({"name":"李四"},{"$rename":{"age":"年纪"}})
db.testcoll.find({"name":"李四"}).pretty()
9,数据的删除
remove(can1,can2)
can1:删除条件
can2:true或是1只删除1个
10,游标(重点)
数据可以一行行的进行操作
对于find()方法就可以返回游标了
判断是否有下一行数据用hasNext()
取出数据next()
var cursor=db.testcoll.find()
cursor.hasNext()
cursor.next()
只输出姓名
var cursor=db.testcoll.find();
while(cursor.hasNext()){
var doc=cursor.next();
print(doc.name);
}
MongoDB 在windows shell环境下的基本操作和命令的使用示例(四)相关推荐
- Linux/unix不同shell环境下数值运算的处理
在阅读本文前,您需要对变量替换.命令替换和数值替换有一点认识. 阅读完本文,您应该获得解决下列问题的信息: 不同shell(bash,csh,ksh)下如何处理数值的运算 常用来数值运算的命令 关于运 ...
- zbb20180619 mysql windows环境下MySQL重启的命令行说明
windows环境下MySQL重启的命令行说明 windows+R 弹出运行框 在运行框中输入cmd + 回车 进入系统的dos窗口 .启动mysql:输入 net start mysql; ...
- Windows 环境下查看 Redis 版本号命令
Windows 环境下查看 Redis 版本号命令: // Redis 客户端输入info server// 结果 # Server redis_version:3.2.100 redis_git_s ...
- Windows 7环境下ZTE U880 通过PC无线网卡共享上网的详细设置
Windows 7环境下ZTE U880 通过PC无线网卡共享上网的详细设置 一.环境说明: PC端环境: l Thinkpad X200 l WIN7 64X l 无线网卡 手机端: l Z ...
- Windows网络环境下网络规划需要掌握的计算方法(一)
我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows网络环境下网络规划必须掌握的技能:网络规划计算.今天先来讲讲第一个知识点,就是如何知道你的网络里有多少数据在跑. 不知道大家有 ...
- Linux Shell环境下用jq命令处理json文件
有时候需要在Shell环境下处理json文件,这时使用jq命令非常方便. 安装 CentOS下可以直接通过yum安装: yum install jq -y 使用方法 假设有一个名为test.json的 ...
- 红旗linux shell方式下配置声卡的命令是:,‘红旗杯’linux大赛——基础知识2
1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...
- 红旗linux shell方式下配置声卡的命令是:,linux基础知识1
1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...
- 怎么判断linux22端口是否通,在Linux环境下使用SSH判断端口是否通(示例代码)
在Linux环境下使用SSH判断端口是否通 在windows/linux环境下,可以使用telnet判断端口状态,但有时候在Linux环境下没有telnet,所以可以使用ssh判断端口状态. 一.ss ...
- ECStore在Win环境下如何运行CMD命令
大多数程序员使用windows开发环境来做ECStore二次开发,经常需要使用 ECStore自带的cmd命令进行一些系统操作,如清除缓存(cacheclean),升级程序(update),创建新的a ...
最新文章
- 时间序列基础教程总结!
- 微博鸿蒙测试版,不久前华为宣布,将会在6月2日举... - @姬永锋 的微博精选 - 微博国际站...
- JS实现文本框有“请输入关键字”功能
- Count SIN Numbers
- 在C++的类中封装多线程
- 北斗导航 | 从北斗二号到北斗三号
- 三连冠!百度PARL 拿下NeurIPS 2020电网调度竞赛双赛道冠军
- 里面的自带的字典在哪里_白羊座性格的弱点在哪里 ?
- 用于安装python第三方库的工具是_Python第三方库安装
- 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
- python程序框架_Python 程序构架浅析
- NumPy学习笔记之zeros_like()函数(包含zeros函数)
- 在C 语言中 下列变量命名不合规范的是,GJB9001C-2017内审员培训试题D卷(答案)
- android wifi分析 实现原理,android framework wifi 开启原理
- IDS-IPS入侵防御原理与实践
- 如何防止木马性图片上传
- 直接插入法(C语言版本)
- 电视机hdr是什么功能
- 视频片段怎么做成gif图?快试试这2种方法
- 好家伙,微信能设置2个头像了!