Mongodb之增删改查操作
一、创建一个数据库
在我们使用MongoDB数据库时引进了这样一个知识,“对于mongodb,使用了不存在的对象,就等于在创建这个对象”,所以创建数据库的操作就比较简单

在我们使用mysql数据库时use指令是进入数据库的操作,而在MongoDB中不仅有进入的指令同时,如果数据库不存在时则会创建,让我们康康数据库里面有什么

查看当前数据库,

唉?,刚刚不是已经创建好数据库了么,怎么会没有呢!,是不是这样想的,当然这是正常的,是MongoDB的一种存储机制,想要数据库能被看到就需要在数据库中插入一个表,要想看到表也同理,也需要在表中插入一条数据。

这样我们就能看到创建好的数据库了。
创建数据库的方式:
use 数据库名 #进入/创建数据库
db.表名.insert({}) #创建表&向表中插入空数据
二,增
插入数据(insert insertOne insertMany)
insert:插入一条或者多条数据,需要带有允许插入多条的参数,这个方法目前官方已经不推荐
使用insertOne插入一条数据:
db.user_info.insertOne({"name":"wanglai","age":21,"hobby":"girl"})
使用insertMany插入多条数据:
db.user_info.insertMany([
{"name":"paqqiuli","age":24,"hobby":"pid"},
{"name":"Izayoi Sakuya","age":22,"hobby":"bl"}
])

三,删
db.user.remove({}) # 官方不推荐使用了
db.user.deleteOne({id:7}) # 删除一条id=7的数据
db.user.deleteMany({name:"ttt"}) # 删除所有name=“ttt"的数据
db.user.deleteMany({}) # 清空数据库
db.user.drop() # 清空数据库
四, 改
db.user_info.updateOne({"hobby":"IT"},{$set:{"hobby":"game"}}) #修改hobby为IT的一条数据
db.user.updateMany({age:20},{$set:{name:"jjj"}}) # 修改age=20的所有数据的 name为"jjj"
db.user.updateMany({age:20},{$set:{hobby: ["ooo", "xxx"]}}) # 可以直接修改为一个数组


针对Field的$修改器
$set 修改器之一 设定 将某Key设定为某值:
db.user.updateMany({age:20},{$set:{name:"jjj"}})
$unset:删除当前的Fields
db.user.updateOne({id:7}, {$unset: {hobby: "" }}) # 把id为7的数据,删除hobby这个字段
db.user.updateOne({id:4}, {$unset: {hobby: 0 }}) # 把id为4的数据,删除hobby这个字段
$inc 在原有值基础上增加 (int类型,就是增加或减少之(负数),string类型,就是字符串拼接)
db.user.updateOne({name:"mmm"},{$inc: {age:5}}) # 给name="mmm"的数据,的age在原来的基础上加上5
针对Arrays的$修改器
$push 在Arrays中添加一个元素
db.user.updateOne({name: "mmm"},{$push:{hobby:"哈哈"}}) # 给name="mmm"的数据中的hobby对于的值(列表),中添加一个值为"哈哈”
db.user.updateOne({name: "jjj"},{$push: {hobby: "dfd"}}) # 该条数据没有字段hobby,则创建一个hobby,把数据放进
db.user.updateOne({name:"mmm"},{$push:{hobby: ["ccc","vvv", "bbb"]}}) 只添加第一个进去
db.user.updateOne({name:"mmm"},{$pushAll:{hobby: ["ccc","vvv", "bbb"]}}) 把列表整体添加进去
$pull 在Arrays中删除一个元素
db.user.updateOne({name:"mmm"},{$pull: {hobby:"ccc"}}) # 在name=mmm这条数据的hobby对应的列表中删掉ccc
$pop 在Arrays中删除最后一个元素或第一个元素
db.user.updateOne({name:"mmm"}, {$pop: {hobby:-1}}) 删除第一个
db.user.updateOne({name: "mmm"},{$pop:{hobby: 1}}) 删除最后一个
$ : 存储 满足前置条件列表元素的下标索引
db.user.updateOne({name: "mmm", hobby: "哈哈"},{$set:{"hobby.$": "大西瓜"}}) # 将name="mmm"这条数据中的hobby对应的列表中的 “哈哈”,改成“大西瓜”
上面的$就是记录前面的"哈哈"在hobby中的索引,所以也可以直接这么写:
db.user.updateOne({name: "mmm"},{$set:{"hobby.0": "绿苹果"}}) # 修改name="mmm"的数据中的hobby索引为0的值为"绿苹果"
db.user.updateOne({name: "mmm"},{$set:{"hobby.1": "大西瓜"}})
混合用法
db.user.updateOne({name:"hhh"},{$set:{course:[
{course_name: "python", score:100},
{course_name: "vue", score:101},
{course_name: "mysql", score:99}
]}}) # 插入数据
db.user.updateOne({name: "hhh", "course.course_name":"python"},{$inc:{"course.$.score": 10}}) # $获取了前面数据的索引
db.user.updateOne({name: "hhh"},{$inc:{"course.0.score": 20}})
五,查
db.user.find({}) # 查询所有数据
db.user.findOne({name:"lll"}) # 查询name=“lll"的数据
$lt 小于 $gt 大于 $lte 小于等于 $gte 大于等于 $eq : 等于
db.user.find({age:{$lte:19}}) # 查询age小于等于19的数据
db.user.find({age:{$gt:19}}) # 查询age大于19的数据
查询$关键字:
{
"_id" : ObjectId("5bc6eac2613e5c72d4c888b0"),
"id" : 10,
"name" : "mmm",
"age" : 30,
"hobby" : [
"绿苹果",
"大西瓜",
"小红枣",
"ccc",
"vvv"
]
}
对于上述数据:
$all 满足所有元素的数据
db.user.find({hobby: {$all: ["大西瓜"]}}) # 可以找到
db.user.find({hobby: {$all: ["大西瓜", "ccc"]}}) # 可以找到
# 主要元素在数据中,就可以找到,可以和原始数据不一样!
$in 满足其中一个元素的数据
db.user.find({hobby: {$in: ["ccc", "vvv"]}}) # 数据在要查询数据的hobby中就可以查到
$or 满足其中一个字段的数据
db.user.find({$or: [{name:"lll"}, {id:1}]}) # 查询 name=”lll“ 或者 id=1的数据
db.user.deleteMany({$or:[{id:8},{id:9}]}) # 删除id=8 或者 id=9的数据
limit(x):
只查询前x条数据
skip(x):
跳过前x条数据
sort({ id:-1 }):
根据id字段进行倒序排列:-1 正序排列:1
分页使用
db.user.find({}).sort({id:1}).skip(0).limit(3) # 第一页
db.user.find({}).sort({id:1}).skip(3).limit(3) # 第二页
db.user.find({}).sort({id:1}).skip(6).limit(3) # 第三页
db.user.find({}).sort({id:1}).skip(9).limit(3) # 第四页
db.user.find({}).sort({id:1}).skip(12).limit(3) # 第五页
Mongodb之增删改查操作的更多相关文章
- Scala对MongoDB的增删改查操作
=========================================== 原文链接: Scala对MongoDB的增删改查操作 转载请注明出处! ==================== ...
- python 全栈开发,Day124(MongoDB初识,增删改查操作,数据类型,$关键字以及$修改器,"$"的奇妙用法,Array Object 的特殊操作,选取跳过排序,客户端操作)
一.MongoDB初识 什么是MongoDB MongoDB 是一个基于分布式文件存储的数据库.由 C++ 语言编写.旨在为 WEB 应用提供可扩展的高性能数据存储解决方案. MongoDB 是一个介 ...
- Node.js对MongoDB进行增删改查操作
MongoDB简介 MongoDB是一个开源的.文档型的NoSQL数据库程序.MongoDB将数据存储在类似JSON的文档中,操作起来更灵活方便.NoSQL数据库中的文档(documents)对应于S ...
- MongoDB基本增删改查操作-mongo shell
基础 1.查看所有数据库: show dbs 2.选择数据库: use test 3.查看数据库中有哪些集合: show collections 如下图: 查询 1.查看集合中有哪些数据,其中abc为 ...
- MongoDB之增删改查(一)
本文主要介绍MongoDB数据库增删改查操作. 增 mongoDB和其它关系型数据库一样,通过insert来添加数据到集合中去. db.collectionName.insert(内容) 显示数据库中 ...
- 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 ...
- SpringBoot操作MongoDB实现增删改查
本篇博客主讲如何使用SpringBoot操作MongoDB. SpringBoot操作MongoDB实现增删改查 (1)pom.xml引入依赖 <dependency> <group ...
- mongoVUE的增删改查操作使用说明
mongoVUE的增删改查操作使用说明 一. 查询 1. 精确查询 1)右键点击集合名,再左键点击Find 或者直接点击工具栏上的Find 2)查询界面,包括四个区域 {Find}区,查询条件格式{& ...
随机推荐
- Freemarke
本文介绍了freemarker的集成.FTL指令.内建函数.运算符等常用操作. 1.为什么要使用网页静态化技术 网页静态化解决方案在实际开发中运用比较多,例如新闻网站,门户网站中的新闻频道或者是文章类 ...
- postgrelsql 的 wm_concat : string_agg
string_agg,array_agg 这两个函数的功能大同小异,只不过合并数据的类型不同 array_agg(expression) 把表达式变成一个数组 一般配合 array_to_string ...
- Excel如何输入负数
一般红字发票很少开,以前都是单独把红字发票摘出来放到一行里,然后加减一下,前段时间有个客户因为普票无法报销,改要了专票,因为是电子发票,无法作废,开了张红字.虽然红字很少开,但是想着百度一下如何在ex ...
- 警方破获超大DDoS黑产案,20万个僵尸网络运营商被抓
中国警方已镇压并逮捕了一个犯罪集团,该集团经营着一个由200,000多个受感染网站构成的僵尸网络,这些网站被用来发起DDoS攻击. 这是中国当局针对兴旺的本地DDoS租用场景进行的首次重大镇压,最大的 ...
- 【视频开发】OpenCV中Mat,图像二维指针和CxImage类的转换
在做图像处理中,常用的函数接口有OpenCV中的Mat图像类,有时候需要直接用二维指针开辟内存直接存储图像数据,有时候需要用到CxImage类存储图像.本文主要是总结下这三类存储方式之间的图像数据的转 ...
- 面试之leetcode20堆栈-字符串括号匹配,队列实现栈
1 给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合.左括号必须以正确的顺序闭合.注意空字符串可被认 ...
- layui的select监听
首先,select一定要放在<form class="layui-form" ></form>里面 然后,加监听<select id="id ...
- java有包名的调用没有包名的类,用反射
没有包名,就是说在根目录,普通项目就是在src下,maven项目就是在src/java目录下 // 通过全类名,没有包名就直接是类名,有包名就要加上包名,比如:com.xiaostudy.TLStri ...
- 腾讯的网站如何检测到你的 QQ 已经登录?
转:http://www.lovelucy.info/tencent-sso.html 在 QQ 已经登录的情况下,手动输入网址打开 QQ 邮箱 或者 QQ 空间 等腾讯网站,可以看到网页已经检测到本 ...
- 10 Spring框架--基于注解的IOC配置
1.工程环境搭建 2.基于注解的IOC配置 IOC注解的分类 (1)用于创建对象的 他们的作用就和在XML配置文件中编写一个<bean>标签实现的功能是一样的@Component: 作用: ...