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(内容) 显示数据库中 ...
随机推荐
- 开源许可证GPL、BSD、MIT、Mozilla、Apache和LGPL的区别(转)
因CooCox用户数及影响力越来越大,CooCox团队也逐渐提高了对软件及代码协议的重视.在收集整理的过程中,一些归纳好的信息和大家分享一下.首先借用有心人士的一张相当直观清晰的图来划分各种协议:开源 ...
- myeclipse 8.0 注册码
Subscriber:accptechSubscription Code:nLR8ZC-855550-6765855429037911 Subscriber:Hello World Subscript ...
- Linq 左连接 left join
Suppose you have a tblRoom and tblUserInfo. Now, you need to select all the rooms regardless of whet ...
- java.lang.NoSuchMethodError: org.objectweb.asm.ClassVisitor.visit(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
异常完整信息 严重: Servlet.service() for servlet RegServlet threw exception java.lang.NoSuchMethodError: org ...
- Castle Windsor 注册组件
1.逐个注册组件即对每个接口通过代码指定其实现类,代码: container.Register( Component.For<IMyService>() //接口 .Implemented ...
- 指针和动态分配内存 (不定长度数组)------新标准c++程序设计
背景: 数组的长度是定义好的,在整个程序中固定不变.c++不允许定义元素个数不确定的数组.例如: int n; int a[n]; //这种定义是不允许的 但是在实际编程中,往往会出现要处理的数据数量 ...
- 互斥锁与join
三 互斥锁与join 使用join可以将并发变成串行,互斥锁的原理也是将并发变成穿行,那我们直接使用join就可以了啊,为何还要互斥锁,说到这里我赶紧试了一下 #把文件db.txt的内容重置为:{&q ...
- 一款给力的一键复制js插件-clipboard.js
一款没有依赖的.给力的一键复制的JS插件 点我前往github 案例demo见下载包内demo文件夹. 这里晒出最常用的几种方式,以供不时之需. <!DOCTYPE html> < ...
- 3、pandas
原文出处: pandas.pydata.org 译文出处:石卓林 这是关于pandas的简短介绍,主要面向新用户.可以参阅Cookbook了解更复杂的使用方法. 链接:http://python. ...
- \\.\Global\vmx86: 系统找不到指定的文件
使用vmware虚拟机时出现如下的错误: vmware安装无法打开内核设备 \\.\Global\vmx86: 系统找不到指定的文件 解决办法: 新建文件,将下面的代码拷贝进去: @Echo Off ...