接上一篇文章继续《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环境下的基本操作和命令的使用示例(四)相关推荐

  1. Linux/unix不同shell环境下数值运算的处理

    在阅读本文前,您需要对变量替换.命令替换和数值替换有一点认识. 阅读完本文,您应该获得解决下列问题的信息: 不同shell(bash,csh,ksh)下如何处理数值的运算 常用来数值运算的命令 关于运 ...

  2. zbb20180619 mysql windows环境下MySQL重启的命令行说明

    windows环境下MySQL重启的命令行说明 windows+R  弹出运行框   在运行框中输入cmd  + 回车  进入系统的dos窗口 .启动mysql:输入 net start mysql; ...

  3. Windows 环境下查看 Redis 版本号命令

    Windows 环境下查看 Redis 版本号命令: // Redis 客户端输入info server// 结果 # Server redis_version:3.2.100 redis_git_s ...

  4. Windows 7环境下ZTE U880 通过PC无线网卡共享上网的详细设置

    Windows 7环境下ZTE U880 通过PC无线网卡共享上网的详细设置 一.环境说明: PC端环境: l  Thinkpad X200 l  WIN7 64X l  无线网卡 手机端: l  Z ...

  5. Windows网络环境下网络规划需要掌握的计算方法(一)

    我是荔园微风,作为一名在IT界整整25年的老兵,今天总结一下Windows网络环境下网络规划必须掌握的技能:网络规划计算.今天先来讲讲第一个知识点,就是如何知道你的网络里有多少数据在跑. 不知道大家有 ...

  6. Linux Shell环境下用jq命令处理json文件

    有时候需要在Shell环境下处理json文件,这时使用jq命令非常方便. 安装 CentOS下可以直接通过yum安装: yum install jq -y 使用方法 假设有一个名为test.json的 ...

  7. 红旗linux shell方式下配置声卡的命令是:,‘红旗杯’linux大赛——基础知识2

    1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...

  8. 红旗linux shell方式下配置声卡的命令是:,linux基础知识1

    1. 在chmod 命令中,-v参数的作用是: A. 详细说明组的变化 *B. 详细说明权限的变化 C. 改变本目录及其所有子目录的文件的权限 D. 在文件的权限确实改变时进行详细的说明 2. 为了显 ...

  9. 怎么判断linux22端口是否通,在Linux环境下使用SSH判断端口是否通(示例代码)

    在Linux环境下使用SSH判断端口是否通 在windows/linux环境下,可以使用telnet判断端口状态,但有时候在Linux环境下没有telnet,所以可以使用ssh判断端口状态. 一.ss ...

  10. ECStore在Win环境下如何运行CMD命令

    大多数程序员使用windows开发环境来做ECStore二次开发,经常需要使用 ECStore自带的cmd命令进行一些系统操作,如清除缓存(cacheclean),升级程序(update),创建新的a ...

最新文章

  1. 时间序列基础教程总结!
  2. 微博鸿蒙测试版,不久前华为宣布,将会在6月2日举... - @姬永锋 的微博精选 - 微博国际站...
  3. JS实现文本框有“请输入关键字”功能
  4. Count SIN Numbers
  5. 在C++的类中封装多线程
  6. 北斗导航 | 从北斗二号到北斗三号
  7. 三连冠!百度PARL 拿下NeurIPS 2020电网调度竞赛双赛道冠军
  8. 里面的自带的字典在哪里_白羊座性格的弱点在哪里 ?
  9. 用于安装python第三方库的工具是_Python第三方库安装
  10. 备份linux分区到usb,将Linux引导加载程序备份到USB的方法
  11. python程序框架_Python 程序构架浅析
  12. NumPy学习笔记之zeros_like()函数(包含zeros函数)
  13. 在C 语言中 下列变量命名不合规范的是,GJB9001C-2017内审员培训试题D卷(答案)
  14. android wifi分析 实现原理,android framework wifi 开启原理
  15. IDS-IPS入侵防御原理与实践
  16. 如何防止木马性图片上传
  17. 直接插入法(C语言版本)
  18. 电视机hdr是什么功能
  19. 视频片段怎么做成gif图?快试试这2种方法
  20. 好家伙,微信能设置2个头像了!

热门文章

  1. Python学习笔记1—Python字符串
  2. 重装SPS 2003的一点经验
  3. pop3方式接收不了邮件原因
  4. 《隋唐演义》二:竞争对手的实力在不断增强
  5. 如何让Html页面的导航固定在浏览器顶部
  6. STC学习:导航按键与数字按键综合控制数码管
  7. jvm虚拟机_JVM虚拟机JVM简介
  8. 鸿蒙系统手机能用几年,华为鸿蒙系统何时能用到手机上?任正非:短时间做不到 重建生态需要几年时间...
  9. 接口接收数据_基于原语的千兆以太网RGMII接口设计
  10. oracle执行计划结果分析_优化体系--sql整体优化(调优工具分析)