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(内容) 显示数据库中 ...
随机推荐
- Java 设计模式 和七大设计原则
创建型模式 抽象工厂模式(Abstract factory pattern): 提供一个接口, 用于创建相关或依赖对象的家族, 而不需要指定具体类. 生成器模式(Builder pattern): 使 ...
- 编写高质量代码改善C#程序的157个建议——建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理
建议47:即使提供了显式释放方法,也应该在终结器中提供隐式清理 在标准的Dispose模式中,我们注意到一个以~开头的方法,如下: /// <summary> /// 必须,防止程序员忘记 ...
- java并发机制的底层实现原理
volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性".可见性是说当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值. vola ...
- DataType--数值类型
SQL Server数值类型可以分为精确数字类型和近似数字类型精确数字BIT/SMALLINT/TINYINT/INT/BIGINTNUMERIC/DECIMAL/SMALLMONEY/MONEY 近 ...
- C#多线程编程实战1.5检测线程状态
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...
- 全新的membership框架Asp.net Identity
在Asp.net上,微软的membershop框架经历了Asp.net membership到Asp.net simple membership,再到现在的Asp.net Identity. 每一次改 ...
- yunpian-python-sdk
快速开始 安装SDK pip install yunpian-python-sdk 代码 使用YunpianClient from yunpian_python_sdk.model import co ...
- 最短路径SPFA算法(邻接表存法)
queue <int> Q; void SPFA (int s) { int i, v; for(int i=0; i<=n; i++) dist[i]=INF; //初始化每点i到 ...
- TextInput
TextInput /** TextInput 是一个允许用户在应用中通过键盘输入文本的基本组件* 本组件的属性提供了多种特性的配置,如自动完成,自动大小写,占位文字,键盘类型等* 常用:* plac ...
- Java 实现发送邮件
javax.mail.AuthenticationFailedException: 530 Error: A secure connection is requiered(such as ssl). ...