mongodb基本命令操作

1.创建数据库

语法

use 数据库名字

例如:创建hero数据库

use hero

在这里插入图片描述
查询当前数据库

db

在这里插入图片描述
如果想查询所有的数据库

show dbs

在这里插入图片描述
发现并没有刚刚创建的数据库,如果要显示创建的数据库,需要向表中插入一条记录

db.hero.insert({name: "zs",age: 20,country: "china",sex: "男",idno: "2131243234"
})

在这里插入图片描述

表数据
在这里插入图片描述
显示数据库hero
在这里插入图片描述

2.删除数据库

创建数据库test,并删除
在这里插入图片描述

删除test数据库命令

db.dropDatabase()

在这里插入图片描述
查询所有的数据库,test已经删除

show dbs

在这里插入图片描述

3.创建集合

创建集合命令

db.createCollection(name, options)

name:创建集合的名字
options:可选参数,指定有关内存大小及索引的选项,可以是下面的参数


capped:布尔值,如果为true,会创建固定集合,具有固定大小的集合,当达到集合最大值的时候,会自动覆盖最早的文档,当该值为true时,必须指定集合的大小

autoIndexId:布尔值,如果为true,会自动在_id字段创建索引,默认值为false

size:为固定集合指定一个最大值,单位为字节

max:指定固定集合中最大的文档数量

例如:在hero数据库中创建mycollection1与mycollection2

use hero

db.createCollection("myCollection1"
)
db.createCollection("myCollection2",{capped: true,size: 65535,max: 1024}
)

查看已经存在的集合

show collections

在这里插入图片描述

4.删除集合

删除集合语法格式

db.集合名字.drop()

例如删除myCollection1

db.myCollection1.drop()

在这里插入图片描述

5.集合数据操作

查询数据基本语法

db.集合名字.insertOne(文档)

向users表中插入数据

db.users.insertOne({name: "luccy",age: 19,status: "PP"}
)

在这里插入图片描述
查询数据

db.users.find()

在这里插入图片描述

插入多条数据语法格式

db.集合名.insert([文档,文档])

例如:

db.users.insertMany([{name: "bool",age: 99,status: "AA"},{name: "yool",age: 98,status: "AA"},{name: "hoos",age: 66,status: "DD"}]
)

插入数据如下
在这里插入图片描述

6.数据查询

比较条件查询语法

db.集合名.find(条件)
等于:{key:val}
大于:{key:$gt:val}
小于:{key:$lt:val}
大于等于:{key:$gte:val}
小于等于:{key:$lte:val}
不等于:{key:$ne:val}

在这里插入图片描述
分页条件查询语法

db.集合名.find({条件}).sort({排序字段:排序方式})).skip(跳过的行数).limit(一页显示多少
数据)

初始化数据

db.goods.insertMany([{item: "journal",qty: 25,size: {h: 14,w: 21,uom: "cm"},status: "A"},{item: "notebook",qty: 50,size: {h: 8.5,w: 11,uom: "in"},status: "A"},{item: "paper",qty: 100,size: {h: 8.5,w: 11,uom: "in"},status: "D"},{item: "planner",qty: 75,size: {h: 22.85,w: 30,uom: "cm"},status: "D"},{item: "postcard",qty: 45,size: {h: 10,w: 15.25,uom: "cm"},status: "A"},{item: "postcard",qty: 55,size: {h: 10,w: 15.25,uom: "cm"},status: "C"}
]);

在这里插入图片描述

查询所有的数据

db.goods.find()

在这里插入图片描述
条件查询

db.goods.find({status: "D"}
)

在这里插入图片描述
查询status带有A的,或者带有D的

db.goods.find({status: {$in: ["A", "D"]}}
)

在这里插入图片描述
如果想查询status等于A,并且qty<30的

db.goods.find({status: "A",qty: {$lt: 30}}
)

在这里插入图片描述
查询status:A,或者qty<30的数据

db.goods.find({$or: [{status: "A"}, {qty: {$lt: 30}}]}
)

在这里插入图片描述
查询status:A,并且(qty<30 or item中是p开头的)

db.goods.find({status: "A",$or: [{qty: {$lt: 30}}, {item: /^p/}]}
)

在这里插入图片描述

嵌套查询,查询size:{h:14,w:21,uom:“cm”}这条数据

db.goods.find({size: {h: 14,w: 21,uom: "cm"}}
)

在这里插入图片描述

嵌套查询,含有标点符号的查询


db.goods.find({"size.uom": "in"}
)

在这里插入图片描述

7.数组查询

插入数据

db.goods_arr.insertMany([{item: "journal",qty: 25,tags: ["blank", "red"],dim_cm: [14, 21]},{item: "notebook",qty: 50,tags: ["red", "blank"],dim_cm: [14, 21]},{item: "paper",qty: 100,tags: ["red", "blank", "plain"],dim_cm: [14, 21]},{item: "planner",qty: 75,tags: ["blank", "red"],dim_cm: [22.85, 30]},{item: "postcard",qty: 45,tags: ["blue"],dim_cm: [10, 15.25]}
]);

在这里插入图片描述
查询tags中包含两个元素blank,red的所有文档,顺序要一致

db.goods_arr.find({tags: ["blank", "red"]}
)

在这里插入图片描述
查询tags中包含blank,red的元素,顺序可以不一致

db.goods_arr.find({tags: {$all: ["red", "blank"]}}
)

在这里插入图片描述
查询文档中dim_cm数组第二个参数大于25的文档

db.goods_arr.find({"dim_cm.1": {$gt: 25}}
)

在这里插入图片描述
查询tags数组长度大于3的文档

db.goods_arr.find({"tags": {$size: 3}}
)

在这里插入图片描述

db.goods_null.insertMany([{_id: 1,item: null},{_id: 2}
])

插入数据

db.goods_null.insertMany([{_id: 1,item: null},{_id: 2}
])

在这里插入图片描述

查询null或者丢失的字段

db.goods_null.find({item: null}
)

在这里插入图片描述

8.数据更新

数据更新语法

db.集合名.update(< query > ,< update > ,{upsert: < boolean > ,multi: < boolean > ,writeConcern: < document > }
)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

插入数据

db.users.insertMany([{_id: 7,name: "benson",age: 19,type: 1,status: "P",favorites: {artist: "Picasso",food: "pizza"},finished: [17, 3],badges: ["blue", "black"],points: [{points: 85,bonus: 20}, {points: 85,bonus: 10}]},{_id: 8,name: "yilia",age: 42,type: 1,status: "A",favorites: {artist: "Miro",food: "meringue"},finished: [11, 25],badges: ["green"],points: [{points: 85,bonus: 20}, {points: 64,bonus: 12}]},{_id: 9,name: "vincent",age: 22,type: 2,status: "A",favorites: {artist: "Cassatt",food: "cake"},finished: [6],badges: ["blue", "Picasso"],points: [{points: 81,bonus: 8}, {points: 55,bonus: 20}]},{_id: 10,name: "mention",age: 34,type: 2,status: "D",favorites: {artist: "Chagall",food: "chocolate"},finished: [5, 11],badges: ["Picasso","black"],points: [{points: 53,bonus: 15}, {points: 51,bonus: 15}]},{_id: 11,name: "carol",age: 23,type: 2,status: "D",favorites: {artist: "Noguchi",food: "nougat"},finished: [14, 6],badges: ["orange"],points: [{points: 71,bonus: 20}]},{_id: 12,name: "della",age: 43,type: 1,status: "A",favorites: {food: "pizza",artist: "Picasso"},finished: [18, 12],badges: ["black", "blue"],points: [{points: 78,bonus: 8}, {points: 57,bonus: 7}]}]
)

案例:
下面的例子对 users 集合使用 db.users .update() 方法来更新过滤条件 favorites.artist 等于
“Picasso” 匹配的第一个 文档。

更新操作:
使用 $set 操作符把 favorites.food 字段值更新为 “ramen” 并把 type 字段的值更新为 0。
使用 $currentDate 操作符更新 lastModified 字段的值到当前日期。
如果 lastModified 字段不存在, $currentDate 会创建该字段;

db.users.find({"favorites.artist": "Picasso"}
)

在这里插入图片描述

db.users.update({"favorites.artist": "Picasso"},{$set: {"favorites.food": "famen",type: 0},$currentDate: {lastModified: true}}
)

在这里插入图片描述
更新多个文档

db.users.update({"favorites.artist": "Picasso"},{$set: {"favorites.food": "ramen",type:10},$currentDate: {lastModified: true}},{multi: true}
)

在这里插入图片描述
更新单个文档
使用 $set 操作符更新 favorites.food 字段的值为 “Chongqing small noodles” 并更新 type 字段的
值为 3,

db.users.updateOne({"favorites.artist": "Picasso"},{$set: {"favorites.food": "狼牙土豆",type: 30},$currentDate: {lastModified: true}}
)

在这里插入图片描述
更新多个文档

db.users.updateMany({"favorites.artist": "Picasso"},{$set: {"favorites.food": "肉夹馍",type: 12},$currentDate: {lastModified: true}}
)

在这里插入图片描述

替换文档,_id是不可变的,如果包含_id,需要与原来的_id一样

db.users.find({"name": "della"}
)

在这里插入图片描述

db.users.replaceOne({name: "della"},{name: "luise",age: 33,type: 2,status: "P",favorites: {"artist": "Dali",food: "donuts"}}
)

在这里插入图片描述

9.数据删除

db.collection.remove(< query > ,{justOne: < boolean > ,writeConcern: < document > }
)

在这里插入图片描述
在这里插入图片描述
根据条件删除数据

db.goods.remove({status: 'A'}
)

在这里插入图片描述
删除所有数据

db.goods.remove({})

删除一条数据

db.goods.deleteOne({status:"A"})

删除多条数据

db.goods.deleteMany({status:"A"})

10.聚合操作

添加数据

db.authors.insertMany([{"author": "Vincent","title": "Java Primer","like": 10},{"author": "della","title": "iOS Primer","like": 30},{"author": "benson","title": "Android Primer","like": 20},{"author": "Vincent","title": "Html5 Primer","like": 40},{"author": "louise","title": "Go Primer","like": 30},{"author": "yilia","title": "Swift Primer","like": 8}
])

在这里插入图片描述
求数量

db.authors.count()
db.authors.count({"author": "Vincent"}
)

在这里插入图片描述

查询字段去重

db.authors.distinct("author"
)

在这里插入图片描述

管道操作
在这里插入图片描述
找出like大于10的

db.authors.aggregate({"$match": {"like": {"$gt": 30}}}
)

在这里插入图片描述

分组,按照id分组

db.authors.aggregate({"$match": {"like": {"$gte": 25}}},{"$group": {"_id": "$author","count": {"$sum": 1}}}
)

在这里插入图片描述
多个字段分组

db.authors.aggregate({"$match": {"like": {"$gte": 10}}},{"$group": {"_id": {"author": "$author","like": "$like"},"count": {"$sum": 1}}}
)

在这里插入图片描述
分组求最大值

db.authors.aggregate({"$group": {"_id": "$author","count": {"$max": "$like"}}}
)

在这里插入图片描述

分组求平均值

db.authors.aggregate({"$group": {"_id": "$author","count": {"$avg": "$like"}}}
)

在这里插入图片描述
分组后放在set集合,不重复,无序

db.authors.aggregate({"$group": {"_id": "$author","like": {"$addToSet": "$like"}}}
)

在这里插入图片描述
分组后放在set集合,不重复,有序

db.authors.aggregate({"$group": {"_id": "$author","like": {"$push": "$like"}}}
)

在这里插入图片描述

$project:投射案例

作用:用来排除字段,也可以对现有的字段进行重命名
字段名:0 就是不显示这个字段
字段名:1 就是显示这个字段

db.authors.aggregate({"$match": {"like": {"$gte": 10}}},{"$project": {"_id": 0,"author": 1,"title": 1}}
)

在这里插入图片描述

db.authors.aggregate({"$match": {"like": {"$gte": 10}}},{"$project": {"_id": 0,"author": 1,"B_Name": "$title"}}
)

在这里插入图片描述

$sort:排序案例
用于对上一次处理的结果进行排序,1:升续 -1:降续

db.authors.aggregate({"$match": {"like": {"$gte": 10}}},{"$group": {"_id": "$author","count": {"$sum": 1}}},{"$sort": {"count":  - 1}}
)

在这里插入图片描述

$limit: 限制条数案例


db.authors.aggregate({"$match": {"like": {"$gte": 10}}},{"$group": {"_id": "$author","count": {"$sum": 1}}},{"$sort": {"count": - 1}},{"$limit": 1}
)

在这里插入图片描述

11.算术表达式案例

对like字段值进行+1操作

db.authors.aggregate({"$project": {"newLike": {"$add": ["$like", 1]}}}
)

在这里插入图片描述

对like字段值减2操作


db.authors.aggregate({"$project": {"newLike": {"$subtract": ["$like", 2]}}}
)

在这里插入图片描述
$multiply
对数组中的多个元素相乘

db.authors.aggregate({"$project": {"newLike": {"$multiply": ["$like", 10]}}}
)

在这里插入图片描述
$divide
数组中的第一个元素除以第二个元素

db.authors.aggregate({"$project": {"newLike": {"$divide": ["$like", 10]}}}
)

在这里插入图片描述
$mod
求数组中第一个元素除以第二个元素的余数

db.authors.aggregate({"$project": {"newLike": {"$mod": ["$like", 3]}}}
)

在这里插入图片描述
$substr
字符串截取操作

db.authors.aggregate({"$project": {"newTitle": {"$substr": ["$title", 1, 2]}}}
)

在这里插入图片描述

$concat
字符串操作:将数组中的多个元素拼接在一起

db.authors.aggregate({"$project": {"newLike": {"$concat": ["$title", "(", "$author", ")"]}}}
)

在这里插入图片描述
$toLower
字符串转小写

db.authors.aggregate({"$project": {"newTitle": {"$toLower": "$title"}}}
)

在这里插入图片描述
$toUpper
字符串操作,转大写

db.authors.aggregate({"$project": {"newAuthor": {"$toUpper": "$author"}}}
)

在这里插入图片描述

新增字段

db.authors.update({},{"$set": {"publishDate": new Date()}},true,true
)

在这里插入图片描述

查询月份

db.authors.aggregate({"$project": {"month": {"$month": "$publishDate"}}}
)

在这里插入图片描述
$cmp比较
$cmp: [exp1, exp2]:
等于返回 0
小于返回一个负数
大于返回一个正数

db.authors.aggregate({"$project": {"result": {"$cmp": ["$like", 20]}}}
)

在这里插入图片描述


db.authors.aggregate({"$project": {"result": {"$eq": ["$author", "Vincent"]}}}
)

在这里插入图片描述
$and且
$and:[exp1, exp2, …, expN]
用于连接多个条件,一假and假,全真and为真

db.authors.aggregate({"$project": {"result": {"$and": [{"$eq": ["$author", "Vincent"]}, {"$gt": ["$like", 20]}]}}}
)

在这里插入图片描述
$or或
$or: [exp1, exp2, …, expN]
用于连接多个条件,一真or真,全假and为假

db.authors.aggregate({"$project": {"result": {"$or": [{"$eq": ["$author", "Vincent"]}, {"$gt": ["$like", 20]}]}}}
)

在这里插入图片描述
$not取反
$not: exp
用于取反操作


db.authors.aggregate({"$project": {"result": {"$not": {"$eq": ["$author", "Vincent"]}}}}
)

在这里插入图片描述

$cond三元运算符
$cond: [booleanExp, trueExp, falseExp]

db.authors.aggregate({"$project": {"result": {"$cond": [{"$eq": ["$author", "Vincent"]}, "111", "222"]}}}
)

在这里插入图片描述

$ifNull非空
$ifNull: [expr, replacementExpr]
如果条件的值为null,则返回后面表达式的值,当字段不存在时字段的值也是null


db.authors.aggregate(
{"$project": {
"result": {"$ifNull": ["$publishDate", "not exist is null"]}}
}
)

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/234015.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

kubernetes kubeadm 集群升级(1.26.1 - 1.27.1)

kubernetes 升级 只能一个大版本大版本升级&#xff0c;也就是1.26.1-1.27.1再进行1.27.1-1.28.1 不能跳版本 升级流程 驱逐master 上的pod&#xff0c;且不可调度 kubectl drain master --ignore-daemonsets# 安装新版本的kubeadm yum install -y kubeadm-1.27.1-0 --disa…

深入理解Java源码:提升技术功底,深度掌握技术框架,快速定位线上问题

为什么要看源码&#xff1a; 1、提升技术功底&#xff1a; 学习源码里的优秀设计思想&#xff0c;比如一些疑难问题的解决思路&#xff0c;还有一些优秀的设计模式&#xff0c;整体提升自己的技术功底 2、深度掌握技术框架&#xff1a; 源码看多了&#xff0c;对于一个新技术…

[NSSRound#3 Team]This1sMysql

[NSSRound#3 Team]This1sMysql 源码 <?php show_source(__FILE__); include("class.php"); $conn new mysqli();if(isset($_POST[config]) && is_array($_POST[config])){foreach($_POST[config] as $key > $val){$value is_numeric($var)?(int)$…

软件测试概念及分类整理汇总

前言 测试小伙伴在谈论软件测试分类&#xff0c;五花八门的分类&#xff0c;眼花缭乱。因为将各个维度划分的内容都整到一块了&#xff0c;在加上各自不同的见解与补充&#xff0c;各种冲突...... Findyou我经过多年测试总结基本定为4类测试(最多5类&#xff0c;自动化或者兼容…

Flutter 监听前台和后台切换的状态

一 前后台的切换状态监听 混入 WidgetsBindingObserver 这个类&#xff0c;这里提供提供了程序状态的一些监听 二 添加监听和销毁监听 overridevoid initState() {super.initState();//2.页面初始化的时候&#xff0c;添加一个状态的监听者WidgetsBinding.instance.addObserver…

多级缓存、OpenResty缓存、Redis分布式缓存、进程缓存

目录标题 一、预期表现二、环境配置1、nginx环境2、OpenResty环境3、redis环境3.1 安装redis3.2 配置启动命令3.3 配置主从3.4 哨兵 4、进程缓存环境 三 、主要编码工作3.1、缓存主要问题解决3.1.1 缓存穿透3.1.2 缓存雪崩3.1.3 缓存击穿 3.2、OpenResty编码3.2.1 openresty/ng…

有什么不同种类的葡萄酒?

当大自然完成了它的工作&#xff0c;葡萄收获了&#xff0c;酒窖主人的任务就是把葡萄园里达到的高质量带给成品酒。《葡萄酒法》将优质葡萄酒分为三类&#xff0c;白葡萄酒、红葡萄酒和玫瑰红葡萄酒&#xff0c;葡萄品种和生产流程被精确定义。 白葡萄酒新鲜&#xff0c;果香浓…

如何克隆驱动器,不同的操作系统有不同的推荐软件

你需要将Windows或macOS安装迁移到新驱动器吗?你可以使用服务备份文件,也可以创建数据的完整一对一副本。通过克隆你的驱动器,你可以创建一个精确的副本。 一些业务级别的备份服务,如IDrive和Acronis,具有内置的磁盘克隆功能,是对正常文件备份的补充。但对于一次性克隆(…

C++ 复杂性 – 为什么你会觉得 C++ 复杂?

C 是否真的复杂因人而异&#xff0c;但多数人都会认同这一观点。“为什么你觉得 C 复杂”这一问题的答案自然也十分主观&#xff0c;但这是个非常有趣的问题&#xff0c;而且会得到各种不同答案。我们或许会认为&#xff1a; 在教授一些功能时可能需要采取更好的方法部分领域可…

用于查询性能预测的计划结构深度神经网络模型--大数据计算基础大作业

用于查询性能预测的计划结构深度神经网络模型 论文阅读和复现 24.【X1.1】 在关系数据库查询优化领域&#xff0c;对查询时间的估计准确性直接决定了查询优化结果&#xff0c;进而影响到数据库整体的查询效率。但由于数据库自身的复杂性&#xff0c;查询时间受到数据分布、数据…

Unity中URP下使用屏幕坐标采样深度图

文章目录 前言一、Unity使用了ComputeScreenPos函数得到屏幕坐标1、 我们来看一下这个函数干了什么2、我们看一下该函数实现该结果的意义 二、在Shader中使用&#xff08;法一&#xff09;1、在Varying结构体中2、在顶点着色器中3、在片元着色器中 三、在Shader中使用&#xff…

独立式键盘控制的4级变速流水灯

#include<reg51.h> // 包含51单片机寄存器定义的头文件 unsigned char speed; //储存流水灯的流动速度 sbit S1P1^4; //位定义S1为P1.4 sbit S2P1^5; //位定义S2为P1.5 sbit S3P1^6; //位定义S3为P1.6 sbit S4P1^7; //位…

rime中州韵小狼毫 日期/农历 时间 事件 节气 滤镜

网络上但凡提到 rime中州韵小狼毫须鼠管输入法&#xff0c;总少不了智能时间&#xff0c;日期等炫技&#xff0c;可见这个便捷时间/日期输入功能是多么的受欢迎。作者也不落窠臼&#xff0c;今天为大家带来的分享就是 时间日期 滤镜。 先睹为快 在正文开始前&#xff0c;我们…

7 种常见的前端安全攻击

文章目录 七种常见的前端攻击1.跨站脚本&#xff08;XSS&#xff09;2.依赖性风险3.跨站请求伪造&#xff08;CSRF&#xff09;4.点击劫持5.CDN篡改6. HTTPS 降级7.中间人攻击 随着 Web 应用程序对业务运营变得越来越重要&#xff0c;它们也成为更有吸引力的网络攻击目标。但不…

探讨JS混淆技术及其加密解密实例

引言 在当前计算机科学领域中&#xff0c;保护软件代码的安全性和隐私性变得愈发重要。为了防止黑客攻击和恶意软件分析&#xff0c;开发人员采用各种技术来混淆和加密其代码&#xff0c;其中包括JS混淆技术。本文将介绍JS混淆技术的原理和应用&#xff0c;并提供一些相关的加密…

HTML5+CSS3小实例:弹出式悬停效果

实例:弹出式悬停效果 技术栈:HTML+CSS 效果: 源码: 【HTML】 <!DOCTYPE html> <html lang="zh-CN"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><m…

Python解析XML,简化复杂数据操作的最佳工具!

更多Python学习内容&#xff1a;ipengtao.com XML&#xff08;可扩展标记语言&#xff09;是一种常见的文本文件格式&#xff0c;用于存储和交换数据。Python提供了多种库和模块&#xff0c;用于解析和操作XML文件。本文将深入探讨如何使用Python操作XML文件&#xff0c;包括XM…

各版本 操作系统 对 .NET Framework 与 .NET Core 支持

有两种类型的受支持版本&#xff1a;长期支持 (LTS) 版本和标准期限支持 (STS) 版本。 所有版本的质量都是一样的。 唯一的区别是支持的时间长短。 LTS 版本可获得为期三年的免费支持和补丁。 STS 版本可获得 18 个月的免费支持和修补程序。 有关详细信息&#xff0c;请参阅 .N…

SpringMVC-视图

SpringMVC中的视图实现了View接口&#xff0c;作用是渲染数据&#xff0c;将Model中的数据展示给用户。render是渲染方法&#xff0c;可以看到渲染的视图是一个View类型的对象。 SpringMVC视图的种类有很多&#xff0c;默认有转发视图和重定向视图。 如果配置了Thymeleaf视图解…

flutter 打包安卓apk 常用配置

打包之前需要先不配置不然会报错 Execution failed for task ‘:app:mergeReleaseResources’. APP目录下的build.gradleaaptOptions.cruncherEnabled falseaaptOptions.useNewCruncher false如图 配置targetSdkVersion 、minSdkVersion 在android/app/src目录下的build.…