mongodb基础

mongodb语法

参考文档:https://docs.mongodb.com/manual/reference/

BSON Types

BSON Type有2种标识符,整形和字符串

类型数值字符串说明
Double1“double”
String2“string”
Object3“object”
Array4“array”
Binary data5“binData”
Undefined6“undefined”Deprecated.
ObjectId7“objectId”
Boolean8“bool”
Date9“date”
Null10“null”
Regular Expression11“regex”
DBPointer12“dbPointer”Deprecated.
JavaScript13“javascript”
Symbol14“symbol”Deprecated.
JavaScript (with scope)15“javascriptWithScope”
32-bit integer16“int”
Timestamp17“timestamp”
64-bit integer18“long”
Decimal12819“decimal”New in version 3.4.
Min key-1“minKey”
Max key127“maxKey”

可以使用***$type***操作符使用这些类型。

BSON特定类型

ObjectId

近似唯一,快速生成,已排序的类型,12byte**。**

String

UTF-8格式,

Timestamps

Date

64位整形,从1970.01.01开始的毫秒数。

查询和投影操作符

Name意义
比较操作符
$eq相等
$gt大于
$gte大于等于
$in包含在集合中
$lt小于
$lte小于等于
$ne不等于
$nin不在集合中
逻辑操作符
$andAND
$notNOT
$nor同时满足2个条件的,则为false
$orOR
元素操作符
$exists字段存在
$type字段类型为指定类型
表达式计算
$expr
$jsonSchema
$mod
$regex正则表达式
$text
$where
地理空间
$geoIntersects
$geoWithin
$near
$nearSphere
数组操作符
$all包含所有指定的元素
$elemMatch存在元素匹配所有指定条件
$size指定数组大小
二进制操作
$bitsAllClear
$bitsAllSet
$bitsAnyClear
$bitsAnySet
注释
$comment
投影
$投影第一个数组元素
$elemMatch投影第一个匹配条件的元素
$meta
$slice

Update操作

操作符说明语法
字段操作
$currentDate设置字段值为当前日期
$inc字段值加上指定值
$min仅当指定值小于字段值时更新
$max仅当指定值大于字段值时更新
$mul字段值乘以指定值
$rename字段重命名
$set设置字段值为指定值
$setOnInsert当文档新增时设置值。
$unset移除字段值
数组操作
$代指匹配查询条件的第一个元素
$[]代指匹配查询条件的所有元素
$[]代指匹配arrayFilters的所有元素
$addToSet如果元素不存在则加入数组
$pop移除第一或最后的元素
$pull移除匹配条件的所有元素
$push增加一个元素到数组
$pullAll移除匹配一个集合的所有元素
修饰
$each修饰 p u s h , push, push,addToSet,循环数组中的每个元素当做一个对象,而不是整个数组作为一个对象
$position修饰$push,指定插入位置
$slice修饰$push,限制修改数组的大小
$sort修饰$push,排序数组
位运算
$bitPerforms bitwise AND, OR, and XOR updates of integer values.

聚合管道阶段

MongoDB的聚合管道将MongoDB文档在一个管道处理完毕后将结果传递给下一个管道处理。管道操作是可以重复的。
表达式:处理输入文档并输出。表达式是无状态的,只能用于计算当前聚合管道的文档,不能处理其它的文档。

集合聚合

db.collection.aggregate()

除了$out, $merge, and $geoNear,所有阶段都可以出现多次。

StageDescription示例
$addFields增加新字段到文档中,类似 p r o j e c t 。 project。 projectset is an alias for $addFields.
$bucket
$bucketAuto
$collStats
$count文档总数
$facet
$geoNear输出接近某一地理位置的有序文档
$graphLookup
$group分组{ $group: { _id: null, count: { $sum: 1 } } }
$indexStats
$limit取n条记录{ $limit : 5 }
$listSessions
$lookup从另外一个文档引入字段
$match用于过滤数据,只输出符合条件的文档。$match使用MongoDB的标准查询操作。{ $match : { score : { $gt : 70, $lte : 90 } } }
$merge把结果输出到指定collection
$out把结果输出到指定collection{ $out: “” }
$planCacheStats
$project修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。$project : { title : 1,author : 1 ,}
$redact
$replaceRoot用replacementDocument代替当前文档{ $replaceWith: }
$replaceWith同$replaceRoot
$sample随机取样{ $sample: { size: 3 } }
$set增加字段{ $set: { : , … } }
$skip跳过n条记录{ $skip : 5 }
$sort排序{ $sort : { age : -1, posts: 1 } }
$sortByCount分组count,再倒序{ s o r t B y C o u n t : " sortByCount: " sortByCount:"tags" } 等价于: { $group: { _id: , count: { $sum: 1 } } }, { $sort: { count: -1 } }
$unset排除字段{ $unset: [ “”, “”, … ] }
$unwind把数组属性平铺,1条记录会平铺成n条记录{$unwind: { path: , includeArrayIndex: , //保存元素索引的新字段 preserveNullAndEmptyArrays: //true:path为null, missing,empty array,输出文档。false:不输出 } }

数据库聚合

db.aggregate( [ { <stage> }, ... ] )

since 3.6

聚合管道操作(标量函数)

NameDescription示例
数学计算
$abs求绝对值
$add加法
$ceil大于等于指定值的最小整数
$divide除法
$exp指数
$floor小于等于指定值的最大整数
$ln自然对数
$log对数
$log1010为底对数
$mod求模
$multiply乘法
$pow求幂
$roundround
$sqrt求二次根
$subtract减法
$trunc截断
数组操作
$arrayElemAt求index
$arrayToObject数组转document
$concatArrays连接数组
$filter过滤
$in在集合中
$indexOfArray第一个匹配的index
$isArray是否数组
$mapmap
$objectToArray对象转数组
$range
$reduce
$reverseArray
$size数组大小
$slice数组切片
$zip合并2个数组
逻辑表达式
$andand
$notnot
$oror
比较操作符
$cmp*比较**2**个操作数*
$eq相等
$gt大于
$gte大于等于
$lt小于
$lte小于等于指定值的最大整数
$ne不等
条件操作符
NameDescription
$cond
$ifNull
$switch
日期操作
$dateFromParts
$dateFromString
$dateToParts
$dateToString
$dayOfMonth
$dayOfWeek
$dayOfYear
$hour
$isoDayOfWeek
$isoWeek
$isoWeekYear
$millisecond
$minute
$month
$second
$toDate
$week
$year
$add
$subtract
字面表达式
$literal
对象表达式
$mergeObjects
$objectToArray
集合操作
$allElementsTrue
$anyElementTrue
$setDifference
$setEquals
$setIntersection
$setIsSubset
$setUnion
字符串操作
$concat
$dateFromString
$dateToString
$indexOfBytes
$indexOfCP
$ltrim
$regexFind
$regexFindAll
$regexMatch
$rtrim
$split
$strLenBytes
$strLenCP
$strcasecmp
$substr
$substrBytes
$substrCP
$toLower
$toString
$trim
$toUpper
文本操作
$meta
三角 函数
$sin
$cos
$tan
$asin
$acos
$atan
$atan2
$asinh
$acosh
$atanh
$degreesToRadians
$radiansToDegrees
类型操作
$convertConverts a value to a specified type.(since4.0)
$toBoolConverts value to a boolean.(since4.0)
$toDateConverts value to a Date.(since4.0)
$toDecimalConverts value to a Decimal128.(since4.0)
$toDoubleConverts value to a double.(since4.0)
$toIntConverts value to an integer.(since4.0)
$toLongConverts value to a long.(since4.0)
$toObjectIdConverts value to an ObjectId.(since4.0)
$toStringConverts value to a string.(since4.0)
$typeReturn the BSON data type of the field.
聚合操作
$addToSet
$avg
$first
$last
$max
$mergeObjects
$min
$push
$stdDevPop
$stdDevSamp
$sum
Accumulators (in Other Stages)
$avg
$max
$min
$stdDevPop
$stdDevSamp
$sum
变量操作
$let

命令

启动shell

启动shell,连接mongo

mongo
mongo --port 28015
mongo "mongodb://mongodb0.example.com:28015"
mongo --host mongodb0.example.com:28015
mongo --host mongodb0.example.com --port 28015
mongo --help
#连接副本
mongo "mongodb://mongodb0.example.com.local:27017,mongodb1.example.com.local:27017,mongodb2.example.com.local:27017/?replicaSet=replA"

shell命令

db相关

#显示正在使用db
db
#选择db
use <database>
#显示所有db
show dbs
show databases
show users
show roles
show logs
#格式化结果
.pretty()
#退出
quit()
#显示db相关命令
db.help()

collection相关

#显示所有collection
show collections
#
db.collection.help()

CRUD操作

插入

db.collection.insertOne({})
db.collection.insertMany([])
db.collection.insert()  //insert one or many
db.collection.save()
db.collection.bulkWrite([ <operation 1>, <operation 2>, ... ],{writeConcern : <document>,ordered : <boolean>}
)

修改

db.collection.updateOne(<filter>, <update>, <options>)
db.collection.updateMany(<filter>, <update>, <options>)
db.collection.replaceOne(<filter>, <update>, <options>)
db.collection.findOneAndReplace().
db.collection.findOneAndUpdate().
db.collection.findAndModify().

删除

db.collection.deleteMany()
db.collection.deleteOne()
db.collection.findOneAndDelete()
db.collection.findAndModify()

查询

 db.collection.find()db.collection.findOne

索引

db.collection.createIndex( <key and index type specification>, <options> )
db.collection.getIndexes() 
db.collection.dropIndex() 
db.collection.dropIndexes()

参考:https://docs.mongodb.com/manual/reference/method/db.collection.createIndex/#db.collection.createIndex

附录

参考:

shell:https://docs.mongodb.com/manual/mongo/

CRUD:https://docs.mongodb.com/manual/crud/

methods:https://docs.mongodb.com/manual/reference/method/

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

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

相关文章

8.9黄金最新行情走势分析及短线交易策略

近期有哪些消息面影响黄金走势&#xff1f;黄金多空该如何研判&#xff1f; ​黄金消息面解析&#xff1a;周三&#xff08;8月9日&#xff09;现货黄金维持震荡&#xff0c;目前交投于1930美元附近&#xff0c;隔日现货黄金盘中震荡下行&#xff0c;失守1930关口并在美盘时段…

【Spring】-Spring的IoC和DI

作者&#xff1a;学Java的冬瓜 博客主页&#xff1a;☀冬瓜的主页&#x1f319; 专栏&#xff1a;【Framework】 主要内容&#xff1a;什么是spring&#xff1f;IoC容器是什么&#xff1f;如何使代码解耦合&#xff1f;IoC的核心原理&#xff0c;IoC的优点。依赖注入/对象装配/…

【ARM 嵌入式 编译系列 10 -- GCC 编译缩减可执行文件 elf 文件大小】

文章目录 GCC 如何缩减可执行文件size测试代码 上篇文章&#xff1a;ARM 嵌入式 编译系列 9-- GCC 编译符号表&#xff08;Symbol Table&#xff09;的详细介绍 下篇文章&#xff1a;ARM 嵌入式 编译系列 10.1 – GCC 编译缩减可执行文件 elf 文件大小 GCC 如何缩减可执行文件s…

Linux下在qtcreator中创建qt程序

目录 1、新建项目 2、单工程项目创建 3、多工程项目创建 4、添加子工程&#xff08;基于多工程目录结构&#xff09; 5、 .pro文件 1、新建项目 切换到“编辑”界面&#xff0c;点击菜单栏中的“文件”-“新建文件或项目” 2、单工程项目创建 只有一个工程的项目&#…

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库

Axure RP移动端高保真CRM办公客户管理系统原型模板及元件库&#xff0c;一套典型的移动端办公工具型APP Axure RP原型模板&#xff0c;可根据实际的产品需求进行扩展&#xff0c;也可以作为移动端原型设计的参考案例。为提升本作品参考价值&#xff0c;在模板设计过程中尽量追求…

chatGPT应用于房地产行业

作为 2023 年的房地产专业人士&#xff0c;您无疑认识到技术对行业的重大影响。近年来&#xff0c;一项技术进步席卷了世界——人工智能。人工智能彻底改变了房地产业务的各个方面&#xff0c;从简化管理任务到增强客户互动。 在本文中&#xff0c;我们将探讨几种巧妙的人工智…

HTML 语言简介

1.概述 HTML 是网页使用的语言&#xff0c;定义了网页的结构和内容。浏览器访问网站&#xff0c;其实就是从服务器下载 HTML 代码&#xff0c;然后渲染出网页。 HTML 的全名是“超文本标记语言”&#xff08;HyperText Markup Language&#xff09;&#xff0c;上个世纪90年代…

zabbix自动注册服务器以及部署代理服务器

文章目录 Zabbix自动注册服务器及部署代理服务器一.zabbix自动注册1.什么是自动注册2.环境准备3.zabbix客户端配置4.在 Web 页面配置自动注册5.验证自动注册 二.部署 zabbix 代理服务器1.分布式监控的作用&#xff1a;2.环境部署3.代理服务器配置4.客户端配置5.web页面配置5.1 …

MS9940T 国产 模拟前端AFE芯片 11-15 节锂电池或磷酸盐电池管理芯片 替代BQ76940

产品简述 MS9940T 是模拟前端 (AFE) 芯片&#xff0c;支持11 到 15 组电池串联。通过 I 2 C &#xff0c;主机控制器 可以使用 MS9940T 来实现电池组管理功能&#xff0c;例如监控&#xff08;电池电压、电池组电流、电池组 温度&#xff09;、保护&#xff08;控制…

分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测

分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测 目录 分类预测 | MATLAB实现GWO-BiLSTM-Attention多输入分类预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.GWO-BiLSTM-Attention 数据分类预测程序 2.代码说明&#xff1a;基于灰狼优化算法&#xff08…

vuejs 设计与实现 - 组件的实现原理

1.渲染组件 如果是组件则&#xff1a;vnode .type的值是一个对象。如下&#xff1a; const vnode {type: MyComponent,}为了让渲染器能处理组件类型的虚拟节点&#xff0c;我们还需要在patch函数中对组件类型的虚拟节点进行处理&#xff0c;如下&#xff1a; function patc…

CentOS7.9 禁用22端口,使用其他端口替代

文章目录 业务场景操作步骤修改sshd配置文件修改SELinux开放给ssh使用的端口修改防火墙&#xff0c;开放新端口重启sshd生效 相关知识点介绍sshd服务SELinux服务firewall.service服务 业务场景 我们在某市实施交通信控平台项目&#xff0c;我们申请了一台服务器&#xff0c;用…

学习Vue:列表渲染(v-for)

在 Vue.js 中&#xff0c;实现动态列表的显示是非常常见的需求。为了达到这个目的&#xff0c;Vue 提供了 v-for 指令&#xff0c;它允许您迭代一个数组或对象&#xff0c;将其元素渲染为列表。然而&#xff0c;在使用 v-for 时&#xff0c;key 属性的设置也非常重要&#xff0…

微信小程序(原生)搜索功能实现

一、效果图 二、代码 wxml <van-searchvalue"{{ keyword }}"shape"round"background"#000"placeholder"请输入关键词"use-action-slotbind:change"onChange"bind:search"onSearch"bind:clear"onClear&q…

实践-CNN卷积层

实践-CNN卷积层 1 卷积层构造2 整体流程3 BatchNormalization效果4 参数对比5 测试效果 1 卷积层构造 2 整体流程 根据网络结构来写就可以了。 池化 拉平 训练一个网络需要2-3天的时间。用经典网络来&#xff0c;一些细节没有必要去扣。 损失函数&#xff1a; fit模型&…

运维监控学习笔记1

1、监控对象&#xff1a; 1、监控对象的理解&#xff1b;CPU是怎么工作的&#xff1b; 2、监控对象的指标&#xff1a;CPU使用率&#xff1b;上下文切换&#xff1b; 3、确定性能基准线&#xff1a;CPU负载多少才算高&#xff1b; 2、监控范围&#xff1a; 1、硬件监控&#x…

线性扫描寄存器分配算法介绍

线性扫描寄存器分配 文章目录 线性扫描寄存器分配1. 算法介绍2. 相关概念3. 算法的实现3.1 伪代码3.2 图示 参考文献 论文地址&#xff1a; Linear Scan Register Allocation ​ 我们描述了一种称为线性扫描的快速全局寄存器分配的新算法。该算法不基于图形着色&#xff0c;而…

echarts3d柱状图

//画立方体三个面 const CubeLeft echarts.graphic.extendShape({shape: {x: 0,y: 0,width: 9.5, //柱状图宽zWidth: 4, //阴影折角宽zHeight: 3, //阴影折角高},buildPath: function (ctx, shape) {const api shape.api;const xAxisPoint api.coord([shape.xValue, 0]);con…

陪诊小程序开发|陪诊陪护小程序让看病不再难

陪诊小程序通过与医疗机构的合作&#xff0c;整合了医疗资源&#xff0c;让用户能够更加方便地获得专业医疗服务。用户不再需要面对繁琐的挂号排队&#xff0c;只需通过小程序预约服务&#xff0c;便能够享受到合适的医疗资源。这使得用户的就医过程变得简单高效&#xff0c;并…

Redis使用规范及优化

缓存设计 缓存方案 普通缓存 查询数据时&#xff0c;先查找缓存&#xff0c;如果有延长缓存时间并返回。如果没有&#xff0c;再去查找数据库&#xff0c;将查询的数据再写到缓存&#xff0c;同时设置过期时间。如果是静态热点数据&#xff0c;可以不设置缓存失效时间。 冷…