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(内容) 显示数据库中 ...
随机推荐
- 云存储上传控件(cloud2)-Xproer.CloudUploader
版权所有 2009-2016荆门泽优软件有限公司 保留所有权利 官方网站:http://www.ncmem.com/ 产品首页:http://www.ncmem.com/webapp/up6.2/in ...
- 命令之 ulimit
help ulimit help ulimit ulimit: ulimit [-SHacdefilmnpqrstuvx] [limit] Modify shell resource limits. ...
- POJ1062 昂贵的聘礼(带限制的spfa)
Description 年轻的探险家来到了一个印第安部落里.在那里他和酋长的女儿相爱了,于是便向酋长去求亲.酋长要他用10000个金币作为聘礼才答应把女儿嫁给他.探险家拿不出这么多金币,便请求酋长降低 ...
- SQL/T-SQL实例参考-2
对多关联查询,查询多中的记录,但是返回一的结果集 子查询语法 --一对多关联查询,查询多中的记录,但是返回一的结果集 SELECT C.* FROM ( SELECT A.BasicID FROM [ ...
- angular 管道
import { Pipe, PipeTransform } from '@angular/core'; @Pipe({ name: 'multi' }) export class MultiPipe ...
- node创建一个简单的web服务
本文将如何用node创建一个简单的web服务,过程也很简单呢~ 开始之前要先安装node.js 1.创建一个最简单的服务 // server.js const http = require('http ...
- 快速排序(一) 思想 JAVA实现
已知数组59.71.37.56.88.96.21.58.48.43 采用快速排序将数组有序. 快速排序同样采用了“分治策略”,使用递归的思路来实现算法. 快速排序的算法思想: 9.71.37.56.8 ...
- php中的openssl开启方法
windows下开启方法: 1: 首先检查php.ini中:extension=php_openssl.dll是否存在, 如果存在的话去掉前面的注释符‘:', 如果不存在这行,那么添加extensio ...
- chmod变更文件或目录的权限
chmod命令用来变更文件或目录的权限.在UNIX系统家族里,文件或目录权限的控制分别以读取.写入.执行3种一般权限来区分,另有3种特殊权限可供运用.用户可以使用chmod指令去变更文件与目录的权限, ...
- HTML 培训教程
HTML培训教程 1. HTML概述 1.1. 什么是 HTML 文件? n ...