mongodb的增删改查
show dbs
显示所有有数据的数据库
use dbname;如use ela;
如果指定的数据库不存在,就会创建,否则就会切到该数据库上。
db
显示当前数据库
db.dropDatabase()
删除当前数据库
show tables
显示当前数据库中所有的集合
db.collection_name.drop()
删除指定集合
文档的增:
db.collection_name.insert(document)
向某个集合中插入一个文档,如果这个集合不存在,则会创建此集合并插入文档
例如,向redPacket_pay集合中插入一个文档
db.redPacket_pay.insert({
"redPacketId":"20170611235340",
"agentNo":"1120103025",
"amount":4
})
db.redPacket_pay.insert({
"redPacketId":"20170611235700",
"agentNo":"1120103025",
"amount":12
})
db.redPacket_pay.insert({
"redPacketId":"20170704001023",
"agentNo":"1120101001",
"amount":20
})
文档的删:
db.collection_name.remove(<query>,{justOne:<boolean>}) //删除文档
justOne,可选,如果为true的话,则只删除第一个符合查询条件的文档,默认为false,删除所有符合查询条件的文档
例如,删除所有agentNo为1120103025的文档
关系型数据库写法:delete from red_packet_pay where agent_no = '1120103025';
mongodb写法:
db.redPacket_pay.remove({"agentNo" : "1120103025"}, false)
或者
db.redPacket_pay.remove({"agentNo" : "1120103025"}, {"justOne":false})
清空redPacket_pay集合
关系型数据库写法:truncate table red_packet_pay;
mongodb写法:db.redPacket_pay.remove({})
文档的改:
db.collection_name.update(
<query>,
<update>,
{
upsert:<boolean>,
multi:<boolean>
}
) //更新文档
upsert,可选,如果为true的话,则如果没有符合查询条件的文档,将会把新文档插入到集合中,默认为false
multi,可选,如果为true的话,则会更新所有符合查询条件的文档,默认为false,只更新第一条
例如,更新redPacketId为20170611235340的文档的amount值为12,如果没有,就新增,如果有多条,只更新第一条
db.redPacket_pay.update({"redPacketId":"20170611235340"},{"$set":{"amount":12}},{"upsert":true,"multi":false})
或者
db.redPacket_pay.update({"redPacketId":"20170611235340"},{"$set":{"amount":12}},true,false)
例如,更新agentNo为1120103025的所有文档的amount值为8,如果没有,就不更新
db.redPacket_pay.update({"agentNo":"1120103025"},{"$set":{"amount":8}},{"multi":true})
或者
db.redPacket_pay.update({"agentNo":"1120103025"},{"$set":{"amount":8}},false,true)
文档的查:
db.collection_name.find() //查询某个集合中的文档,find()里面如果没有参数则查全部,有参数的话,类似于关系数据库中的where条件。
例如,查询redPacket_pay集合中agentNo为1120103025的文档
db.redPacket_pay.find({"agentNo":"1120103025"})
例如,查询redPacket_pay集合中agentNo为1120103025、redPacketId为20170611235700的文档
db.redPacket_pay.find({"agentNo":"1120103025","redPacketId":"20170611235700"})
例如,查询redPacket_pay集合中amount<12的文档
db.redPacket_pay.find({"amount":{$lt:12}}) //$lt是小于号<对应的关键字,lt其实是less than
例如,查询redPacket_pay集合中amount>12的文档
db.redPacket_pay.find({"amount":{$gt:12}}) //$gt是大于>对应的关键字,gt其实是greater than
例如,查询redPacket_pay集合中amount<=12的文档
db.redPacket_pay.find({"amount":{$lte:12}}) //$lte是小于等于<=对应的关键字,e是equals的意思
例如,查询redPacket_pay集合中amount>=12的文档
db.redPacket_pay.find({"amount":{$gte:12}}) //$gte是大于等于>=对应的关键字
例如,查询redPacket_pay集合中amount≠12的文档
db.redPacket_pay.find({"amount":{$ne:12}}) //$ne是不等于≠对应的关键字,ne是not equals的意思
例如,查询redPacket_pay集合中amount为4或者为20的文档
db.redPacket_pay.find({$or:[{"amount":4},{"amount":20}]}) //$or是 或 对应的关键字,后面对应一个数组
例如,查询redPacket_pay集合中redPacketId为20170611235340且amount为4或者为20的文档
db.redPacket_pay.find({"redPacketId":"20170611235340",$or:[{"amount":4},{"amount":20}]})
分组:相当于关系数据库的group by
例如,查询redPacket_pay集合中不同的agentNo值所对应的文档数量
关系型数据库写法:select agent_no, count(1) from red_packet_pay rpp group by agent_no;
mongodb写法:用group方法,key中放分组字段,initial对应每组都有的一个数组,$reduce函数第一个参数是当前文档,第二个参数是当前组
db.redPacket_pay.group({
"key":{"agentNo":true},
"initial":{"redPacketIdArr":[]},
"$reduce":function(doc,out){
out.redPacketIdArr.push(doc.redPacketId);
}
})
如果想加查询条件的话,用condition
例如,查询redPacket_pay集合中amount>4的文档,按agentNo分组,查询出每组的文档数量
关系型数据库写法:select agent_no, count(1) from red_packet_pay where amount > 4 group by agent_no;
mongodb写法:
db.redPacket_pay.group({
"key":{"agentNo":true},
"initial":{"redPacketIdArr":[]},
"$reduce":function(doc,out){
out.redPacketIdArr.push(doc.redPacketId);
},
"condition":{"amount":{"$gt":4}}
})
排序:相当于关系数据库的order by
db.collection_name.find().sort({key:1})
key表示排序字段,1表示升序,-1表示降序
例如,查询redPacket_pay集合的数据,按照agentNo升序、amount降序排列
关系型数据库写法:select * from red_packet_pay order by agent_no, amount desc;
db.redPacket_pay.find().sort({"agentNo":1,"amount":-1})
分页:相当于postgresql数据库的limit offset
db.collection_name.find().sort({key:1}).skip(number1).limit(number2) //skip(number)方法表示跳过多少条,limit(number)方法表示查多少条
例如,查询redPacket_pay集合的数据,按照agentNo升序、amount降序排列,10条数据一页,查询第3页
postgresql数据库写法:select * from red_packet_pay order by agent_no, amount desc limit 10 offset 20;
db.redPacket_pay.find().sort({"agentNo":1,"amount":-1}).skip(20).limit(10)
聚合函数:
db.collection_name.count() //查询集合的记录数,也可以添加查询条件
例如,查询redPacket_pay集合中agentNo为1120103025的文档数
关系型数据库写法:select count(1) from red_packet_pay where agent_no = '1120103025';
mongodb写法:db.redPacket_pay.count({"agentNo":"1120103025"})
其他查询:
distinct的使用
例如,查询集合文档键amount的所有值
关系型数据库写法:select distinct amount from red_packet_pay;
mongodb写法:db.redPacket_pay.distinct("amount")
索引:
db.collection_name.ensureIndex({key:1}) //给集合某些字段添加索引,可以指定多个字段,且必须指定字段是升序还是降序
例如,给redPacket_pay集合的agentNo添加升序索引
db.redPacket_pay.ensureIndex({"agentNo":1})
ensureIndex()还可以添加其他参数,如
background 建索引会阻塞其他数据库操作,设background为true可以在后台建索引,默认为false
unique 是否是唯一索引,默认为false
name 指定索引的名字,如果不指定,mongodb会按照一定的规则生成索引名字
例如,给redPacket_pay集合的redPacketId字段添加唯一索引
db.redPacket_pay.ensureIndex({"redPacketId":1},{"unique":true})
mongodb的增删改查的更多相关文章
- Java连接MongoDB进行增删改查
1.导入必须的包: 详情看项目:http://pan.baidu.com/s/1cvDAOY 2.通过Myeclipse创建WEB项目 3. 3.bean:创建实体类 package com.bean ...
- MongoDB的增删改查 转
MongoDB的增删改查 (黎明你好原创作品,转载请注明) MongoDB中数据的基本单元叫做文档,采用json的键-值的方式.多个键及其关联的值有序的存放在一起变是文档.类似于编程语言中的键值关系. ...
- Java实现mongodb原生增删改查语句
Java实现mongodb原生增删改查语句 2018-03-16 自动化测试时,需校验数据库数据,为了快速自动化,在代码中用原生增删改查语句操作mongodb 结构 代码 0 pom.xml < ...
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- C# 对MongoDB 进行增删改查的简单操作
C# 对MongoDB 进行增删改查的简单操作 下面演示下C#操作MongoDB驱动的简单的增删改查代码 运用到的MongoDB支持的C#驱动,当前版本为1.6.0 1,连接数据库 /// & ...
- python操作三大主流数据库(8)python操作mongodb数据库②python使用pymongo操作mongodb的增删改查
python操作mongodb数据库②python使用pymongo操作mongodb的增删改查 文档http://api.mongodb.com/python/current/api/index.h ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- 2,MongoDB之增删改查及pymongo的使用
本章我们来学习一下关于 MongoDB的增删改查 一.MongoDB操作 之 原生ORM,根本不存在SQL语句 创建数据库:这里和一般的关系型数据库一样,都要先建立一个自己的数据库空间 是的,Mong ...
- SpringBoot操作MongoDB实现增删改查
本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
随机推荐
- css属性position的运用
随着web标准的规范化,网页的布局也随之千变万化.各种复杂漂亮有创意的页面布局冲 击这人们的视野,相比以前的table布局那就不是一等级的事儿.这个很大一部分功劳是css 样式的引入.而这个多样性布局 ...
- .netcore项目部署IIS问题
1.一般根据项目安装对应的runtime 下载地址:https://www.microsoft.com/net/download 2.如果出现502错误可以在cmd命令里面运行如下 如果报错,找到对 ...
- Winform中的DatagridView显示行号
1.设置 RowPostPaint 为true 2.启用RowPostPaint事件 /// <summary> /// DataGridView显示行号 /// </summary ...
- css css预处理器
CSS预处理器(css preprocessor) 1.less: 2.sass: 3.scss: 4.stylus 参考: http://hao.jser.com/archive/2507/ htt ...
- C# 多态(2)
接上面讲 我们知道虚方法,和重写方法. 但是有没有发现 override和new的作用是差不多的. 但为什么还要单独写出来两个呢? 首先,咱们要明白一个问题,继承是具有线性传播的. class Fat ...
- 《Java多线程编程实战指南+设计模式篇》笔记
线程的监视:工具:jvisualvm.exe 命令:jstack PID 原子性: volatile关键字: 显示锁:人为实现的程序员可控制的锁,包括synchronized和Lock下的实现类: 线 ...
- Duration Assertion(持续时间)
Duration Assertion用来测试每一个响应的时间是否小于给定的值,任何超过给定毫秒数的响应都会标记为失败. Duration in milliseconds:响应的持续时间是否在给定的值范 ...
- python3好用的requests库
python3好用的requests库 requests是什么? requests是基于urllib编写的http库,支持python3,比urllib更好用,更简单.之前使用python写一些htt ...
- kali linux之选择和修改exp与windows后渗透
网上公开的exp代码,选择可信赖的exp源,exploit-db,securityfocus,searchsploit,有能力修改exp(python,perl,ruby,c,c++.......) ...
- 使用Eclipse的几个必须掌握的快捷方式
“工若善其事,必先利其器”,感谢Eclipse,她 使我们阅读一个大工程的代码更加容易,在阅读的过程中,我发现掌握几个Eclipse的快捷键会使阅读体验更加流畅,写出来与诸君分享,欢迎补充. 1. C ...