1、插入:

使用insert或save方法想目标集合插入一个文档:

db.person.insert({"name":"ryan","age":30});

使用batchInsert方法实现批量插入,它与insert方法非常类似,只是它接受的是一个文档数组作为参数。

 一次发送数十,数百乃至数千个文档会明显提高插入的速度。

db.person.batchInsert([{"name":"ryan","age":30},{"name":"pitaya","age":2}]);

如果在批量插入的过程中有一个文档插入失败,那么在这个文档之前的所有文档都会成功插入到集合中,而这个文档以及之后的所有文档全部插入失败。

 如果希望batchInsert忽略错误并且继续执行后续插入,可以使用continueOnError选项。shell并不支持这个选项,但所有的驱动程序都支持。

2、更新:

使用update方法来更新集合中的数据。update有四个参数,前两个参数是必须的。

db.person.update({"name":"ryan"},{"$set":{"age":35}},true,true);

第一个参数:查询文档,用于定位需要更新的目标文档。

第二个参数:修改器文档,用于说明要对找到的文档进行哪些修改。

第三个参数:true表示要使用upsert,即如果没有找到符合更新条件的文档,就会以这个条件和更新文档为基础创建一个新的文档。如果找到了匹配的文档,则正常更新。

第四个参数:true表示符合条件的所有文档,都要执行更新。

修改器:

$set:用来指定一个字段的值。如果这个字段不存在,则创建它。对于更新而言,对符合更新条件的文档,修改执行的字段,不需要全部覆盖。

db.person.update({"name":"ryan"},{"$set":{"age":35}},true,true);

$inc:用来增加已有键的值,或者该键不存在就创建一个。对于投票等有变化数值的场景,这个会非常方便。

db.person.update({"name":"ryan"},{"$inc":{"age":2}},true,true);//对符合name等于ryan的文档,age字段加2。

$push:向已有数组末尾加入一个元素。

db.person.update({"name":"ryan"},{"$set":{"language":["chinese"]}},true,true);//对符合name等于ryan的文档,添加一个language的数组

db.person.update({"name":"ryan"},{"$push":{"language":"english"}},true,true);//给数组的末尾添加一个值。

$addToSet:避免向数组插入重复的值。

db.person.update({"name":"ryan"},{"$addToSet":{"language":"english"}},true,true);

$each:与$push和$addToSet结合,一次给数组添加多个值。

db.person.update({"name":"ryan"},{"$push":{"language":{"$each":["Japanese","Portuguese"]}}},true,true);

db.person.update({"name":"ryan"},{"$addToSet":{"language":{"$each":["Japanese","Portuguese"]}}},true,true);

$pop:可以从数组的任何一端删除元素。

db.person.update({"name":"ryan"},{"$pop":{"language":1}},true,true);//从数组的末尾删除一个元素

db.person.update({"name":"ryan"},{"$pop":{"language":-1}},true,true);//从数组的头部删除一个元素

$pull:删除数组对应的值。全部删除。

db.person.update({"name":"ryan"},{"$pull":{"language":"english"}},true,true);

3、删除:

使用remove方法删除集合中的数据。它可以接受一个查询文档作为可选参数。给定这个参数以后,只有符合条件的文档才能被删除。

(删除数据是永久性的,不能撤销,也不能恢复)。

db.person.remove({"name":"ryan"});//删除person集合中name字段的值等于ryan的所有文档。

db.person.remove();//删除person集合中所有的文档。

使用drop方法代替remove方法,可以大幅度提高删除数据的速度。但是这个方法不能指定任何限定条件。而且整个集合都会被删除,包括索引等信息,甚用!!

db.person.drop();

4、查询:

MongoDB中使用find方法来进行查询。查询就是返回一个集合中文档的子集,子集的范围从0个文档到整个集合。find方法接受两个参数。

第一个参数决定了要返回哪些文档,参数的内容是查询的条件。

第二个参数来指定想要的键(字段)。第二个参数存在的情况:键的值为1代表要显示,为0代表不显示。“_id”默认显示,其他默认不显示。

第二个参数不存在的情况:所有字段默认显示。

db.person.find({"name":"ryan"},{"name":1});

查询条件:

$lt、$lte、$gt、$gte这四个,就是全部的比较操作符(没有$eq这个操作符),分别对应<、<=、>、>=。

db.person.find({"age":{"$lt":10}});

这里提供一段小脚本,插入10万条数据,做之后的测试用。

  1 for(var i=0;i<100000;i++){

  2     db.person.insert({"name":"ryan"+i,"age":i});

  3 }

$in、$nin,用来查询一个键的多个值。

db.person.find({"age":{"$in":[1,3]}});//查询age等于1或3的文档。

db.person.find({"age":{"$nin":[1,3]}});//查询age不等于1或3的文档。

$or,用来查询多个键的多个值。可以和$in等配合使用。

db.person.find({"$or":[{"name":"ryan2"},{"age":3}]});//查询name等于ryan2   或者   age等于3的文档。

$exists,查询的键对应是值是null的,默认会返回null和键不存在的文档。可以通过$exists来判断该键是否存在。

db.person.find({"age":{"$in":[null],"$exists":true}});//查询age等于null,并且键是存在的文档。

$where,用它可以在查询中执行任意的javascript,这样就能在查询中做(几乎)任何事情。为了安全起见,应该严格限制或者消除"$where"语句的使用。

db.person.find({"$where":function(){

...;//这里可以是任意的javascript语句。

}})

游标:利用游标可以限制结果的数量,略过部分结果,根据任意键按任意顺序的组合对结果进行各种排序,或者是执行其他的一些强大的操作。

  1 var cursor = db.person.find();

  2 while(cursor.hasNext()){

  3     obj = cursor.next();

  4     ...;//这里可以做任何事情。

  5 }

常用的shell

limit:只返回前面多少个结果。

db.person.find().limit(2);//查询符合条件的文档,显示前两个文档。

skip:跳过多少个结果后显示剩余的。

db.person.find().skip(2);//查询符合条件的文档,显示跳过2个文档后剩余的所有文档。

sort:用于排序。接受一个对象(一组键值对)作为参数,键对应文档的键名,值代表排序的方向。

排序的方向可以是1(升序)或者-1(降序)。如果指定了多个键,则按照这些键被指定的顺序逐个排序。

db.person.find().sort({"name":1,"age":-1});//查询的结果,按照name升序,age降序来排序显示。

转载于:https://www.cnblogs.com/GtShare/p/7660584.html

mongodb 集合操作 (增删改查)相关推荐

  1. Mongodb命令操作增删改查

    Mongodb命令操作增删改查 需求描述 新增5 人 查询 修改 删除 数据结构 {"_id" : ObjectId("59f938235d93fc4af8a37114& ...

  2. Mongodb的的增删改查

    Mongodb的的增删改查 1. mongodb插入数据 命令:db.集合名称.insert(document)   [document要用大括号包起来] db.stu.insert({name:'g ...

  3. MySQL 之基础操作增删改查等

    一:MySQL基础操作 使用方法: 方式一: 通过图型界面工具,如 Navicat,DBeaver等 方式二: 通过在命令行敲命令来操作 SQL ( Structure query language ...

  4. 利用koa实现mongodb数据库的增删改查

    概述 使用koa免不了要操纵数据库,现阶段流行的数据库是mongoDB,所以我研究了一下koa里面mongoDB数据库的增删改查,记录下来,供以后开发时参考,相信对其他人也有用. 源代码请看:我的gi ...

  5. 数据库的操作 增删改查 mysql

    数据库的操作 增删改查 mysql 登陆数据库 查看全部的数据库 系统提供的库,除了 test 是给我们练手的 其它的不要碰 mysql库,保存了系统重要内容,比如帐户 root帐户的用户名,密码,就 ...

  6. NodeJS里如何连接MySQL并分别操作增删改查

    本文简介 Node.js 里连接 MySQL ,并分别操作增删改查 . 你需要在电脑里安装一下 MySQL ,最好再安装一个数据库管理工具.我使用的是 MySQL Workbench ,这是一款 My ...

  7. Java操作Mongodb数据(增删改查聚合查询)

    文章目录 一.Java操作MongoDB 二.使用步骤 1.基础配置 2.实体类 3.MongoDB表数据 3.增删改查聚合查询 总结 一.Java操作MongoDB 上一篇文章介绍了,如何在本地使用 ...

  8. nodejs对mongodb数据库的增删改查操作(转载)

    首先要确保mongodb的正确安装,安装参照:http://docs.mongodb.org/manual/tutorial/install-mongodb-on-debian-or-ubuntu-l ...

  9. java里SQL insert操作的语法_Java含个人总结语法:JDBC,学生表,实体类,集合,增删改查,注入,预处理【诗书画唱】...

    create table denglu( uname varchar(30), upwd varchar(30) ) insert into denglu values('诗书','123') ins ...

  10. mongodb数据库的增删改查(有图有demo)

    名词注释 下面的截图中,有一些名词需要解释一下,方便理解和应用: cuckoo叫库名,也就是数据库的名字 users叫集合名,也就是colloction的名字 右侧带_id的一排排的, 那叫文档 而_ ...

最新文章

  1. 我和AI打了六局王者荣耀,心态崩了
  2. spring事务管理一:关于事务管理的接口
  3. POJ2631 Roads in the North
  4. impdp的一些实际问题解决方法
  5. js 日期比较大小,js判断日期是否在区间内,js判断时间段是否在另外一个时间段内...
  6. opencv 编译报错(CMake Error: The following variables are used in this project, but they are set to not )
  7. paip..net DATAGRIDVIEW表格里边加PROCESSBAR进度条控件总结
  8. win10专业版修改家庭计算机,win10家庭版升级专业版的最完美的方法_win10专业版技巧...
  9. 三星识别文字_Samsung OCR Software三星光学字符识别软件下载_Samsung OCR Software三星光学字符识别软件官方下载-太平洋下载中心...
  10. 找出java重复字符串,java 找出字符串出现重复的字符和次数
  11. Crackme#1算法注册机
  12. sql server 首字母大写
  13. 树莓派小车————全部代码
  14. 树莓派+内网穿透实现远程监控
  15. ce查找人物基址_关于CE找基址的一些基础概念
  16. Leetcode 45:跳跃游戏 II(最详细的解法!!!)
  17. Pycharm使用GPU,CUDA环境配置
  18. python字符串能不能加减乘除_Python运算符可不只有加减乘除
  19. 码云生成公钥 公钥的作用是什么?
  20. ArcGIS实验教程——实验四十七:数据驱动页工具批量制作甘肃省各地级市人口七普专题图集

热门文章

  1. [渝粤教育] 中国地质大学 数据结构 复习题
  2. Azure ARM (16) 基于角色的访问控制 (Role Based Access Control, RBAC) - 使用默认的Role
  3. 20189217 2018-2019-2 《密码与安全新技术专题》第9周作业
  4. android:windowSoftInputMode属性;界面关闭后软键盘不隐藏的解决方法;
  5. java删除目录下符合条件的文件
  6. 【转】无需刻录DMG光盘,教你在VMWare下安装MAC OS X Snow Leopard 10.6
  7. javascript:控制一个元素高度始终等于浏览器高度
  8. es6 模板字变量和字符串占位符
  9. 王者荣耀交流协会 — Alpha阶段中间产物
  10. [core java学习笔记][第十一章异常断言日志调试]