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(内容) 显示数据库中 ...
随机推荐
- 浅谈Android内存管理
最近在网上看了不少Android内存管理方面的博文,但是文章大多都是就单个方面去介绍内存管理,没有能全局把握,缺乏系统性阐述,而且有些观点有误,仅仅知道这些,还是无法从整体上理解内存管理,对培养系统优 ...
- 通达OA整合教程
资源下载地址: 通达OA 2015:http://pan.baidu.com/s/1qYMxsZU mysql下载:http://pan.baidu.com/s/1c2oVI5y 整合文件:htt ...
- Linux相关常用工具
Xshell Xshell可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的. 通常需要通过vpn访问.建立vpn隧道可以通过FortiClient 或者 I ...
- MongoDB整理笔记の高级查询
1.条件操作符 <, <=, >, >= 这个操作符就不用多解释了,最常用也是最简单的 db.collection.find({ "field" : ...
- 《PRC:更新项目汇总额》报错
请求报红,日志如下: +---------------------------------------------------------------------------+ 项目: Version ...
- ubuntu14.04,安装Chrome(谷歌浏览器)
Linux:ubuntu14.04 一直都很喜欢谷歌浏览器,进入linux怎么能没有? 安装方法:谷歌浏览器官方下载的ubuntu版本,下载后点击即可安装. 下载地址:http://download. ...
- 第十二篇 os模块
Python的os模块提供了系统相关,目录,文件操作,执行命令等操作. 1.文件和目录操作相关的方法: 方法 说明 os.mkdir 创建目录 os.rmdir 删除目录 os.rename 重命名 ...
- The server of Apache (三)——网页优化
在企业中,部署apache后只采用默认的配置参数,会有很多问题,因为那些配置都是针对以前服务器配置的. 一.网页压缩 1.介绍 配置apache的网页压缩功能,是使用Gzip压缩算法来对apache服 ...
- SpringMVC返回JSON数据
1.导入json的jar包2.在Controller类中添加 //查看用户信息 ?json //params="json"的意思是访问view这个方法的时候,必须有一个参数json ...
- 关于RN热更新-iOS端捕获加载jsbundle异常解决方案
1.监听加载jsbundle异常的处理 模拟情况:合并增量后jsbundle文件出现部分错误调试发现当加载jsbundle出现异常时,RN模块RCTBatchedBridge.m中如下代码会执行: - ...