mongodb的相关关键字说明

embedded/2024/10/21 1:57:43/

以下是MongoDB中一些数据库相关的关键字说明:

1. 数据库(Database)

  • 概念
  • 操作相关关键字
    • use:用于切换到指定的数据库,如果数据库不存在则创建该数据库。例如:use mydb会切换到mydb数据库,如果mydb不存在则创建它。
    • show dbsshow databases:用于显示当前MongoDB服务器实例中所有的数据库列表。但需要注意的是,它只会显示有数据的数据库(即数据库中至少有一个集合包含文档)或者已经分配了一定磁盘空间的数据库

2. 集合(Collection)

  • 概念
    • 集合是MongoDB中一组文档的容器,类似于关系型数据库中的表。一个数据库可以包含多个集合,集合中的文档可以有不同的结构(即字段可以不同,但都符合MongoDB的文档格式要求)。
  • 操作相关关键字
    • db.createCollection("collection_name"):用于在当前数据库中手动创建一个名为collection_name的集合。例如:db.createCollection("users")会创建一个名为users的集合。需要注意的是,如果向一个不存在的集合中插入文档时,MongoDB会自动创建该集合,所以手动创建集合不是必需的操作。
    • show collectionsshow tables:用于显示当前数据库中所有的集合列表。例如,在切换到mydb数据库后,执行show collections会显示mydb数据库中的所有集合。
    • db.collection_name.drop():用于删除当前数据库中名为collection_name的集合。例如:db.users.drop()会删除users集合。

3. 文档(Document)

  • 概念
    • 文档是MongoDB中数据的基本单元,它是一个类似于JSON格式的键值对数据结构,也被称为BSON(Binary JSON)格式。文档可以包含不同类型的数据字段,并且可以嵌套其他文档或数组。
  • 操作相关关键字
    • db.collection_name.insert(document):用于向collection_name集合中插入一个文档。例如:db.users.insert({"name":"John","age":30})会向users集合中插入一个包含nameage字段的文档。这里的文档格式是一个JSON风格的对象,其中键是字段名,值是对应的数据。
    • db.collection_name.find():用于查询collection_name集合中的所有文档。例如:db.users.find()会返回users集合中的所有文档。可以使用查询条件来筛选特定的文档,例如:db.users.find({"age":30})会返回users集合中age为30的文档。
    • db.collection_name.update(query, update):用于更新collection_name集合中符合query条件的文档。例如:db.users.update({"age":30},{"$set":{"age":31}})会将users集合中age为30的文档的age字段更新为31。这里的$set是一个更新操作符,用于指定要更新的字段和值。
    • db.collection_name.remove(query):用于删除collection_name集合中符合query条件的文档。例如:db.users.remove({"age":30})会删除users集合中age为30的文档。

4. 索引(Index)

  • 概念
    • 索引是一种数据结构,用于提高数据查询的效率。在MongoDB中,索引可以基于文档中的一个或多个字段创建,类似于关系型数据库中的索引。通过创建索引,可以加快对文档的查找、排序和分组操作。
  • 操作相关关键字
    • db.collection_name.ensureIndex({field: direction}):用于在collection_name集合中基于field字段创建一个索引,direction可以是1(表示升序)或 -1(表示降序)。例如:db.users.ensureIndex({"name":1})会在users集合中基于name字段创建一个升序索引。创建索引可以提高对name字段的查询效率,例如在执行db.users.find({"name":"John"})查询时,如果有name索引,查询速度会更快。
    • db.collection_name.getIndexes():用于获取collection_name集合中所有的索引列表。例如:db.users.getIndexes()会返回users集合中所有的索引信息,包括索引名称、基于的字段、排序方向等。
    • db.collection_name.dropIndex("index_name"):用于删除collection_name集合中名为index_name的索引。例如:db.users.dropIndex("name_1")会删除users集合中基于name字段创建的名为name_1的索引。

5. 聚合(Aggregation)

  • 概念
    • 聚合是一种对数据进行处理和分析的操作,用于从多个文档中提取信息、进行计算和分组等。在MongoDB中,聚合操作是通过聚合管道(Aggregation Pipeline)来实现的,聚合管道是一系列的阶段(Stage)组成,每个阶段对输入的数据进行一种特定的操作,然后将结果传递给下一个阶段。
  • 操作相关关键字
    • db.collection_name.aggregate(pipeline):用于在collection_name集合中执行聚合操作,pipeline是一个包含聚合阶段的数组。例如:db.users.aggregate([{"$match":{"age":30}},{"$group":{"_id":"$gender","count":{"$sum":1}}}])会先筛选出age为30的文档,然后根据gender字段进行分组,并计算每组的数量。这里的$match$group是聚合管道中的两个常见阶段,$match用于筛选数据,$group用于分组数据。
    • $sum$avg$max$min$push$addToSet$first$last:这些是聚合管道中常用的操作符,用于进行求和、求平均、求最大值、求最小值、将值推送到数组、将值添加到不重复数组、获取第一个文档的值、获取最后一个文档的值等操作。例如,在上述聚合操作中,$sum用于计算每组的数量。

6. 用户和权限(User and Permission)

  • 概念
    • MongoDB支持用户认证和权限管理,用户可以被赋予不同的角色和权限,以控制对数据库、集合和文档的访问。
  • 操作相关关键字
    • use admin:用于切换到admin数据库admin数据库是用于管理用户和权限的核心数据库。在创建用户、授予权限等操作时,通常需要先切换到admin数据库
    • db.createUser(user_document):用于在当前数据库(通常是admin数据库)中创建一个用户。user_document是一个包含用户信息的文档,包括用户名、密码、角色等。例如:db.createUser({"user":"john","pwd":"123456","roles":[{"role":"readWrite","db":"mydb"}]})会创建一个名为john的用户,密码为123456,并赋予其对mydb数据库的读写权限。
    • db.auth(user_name, password):用于对用户进行认证,验证用户提供的用户名和密码是否正确。例如:db.auth("john","123456")会验证john用户的密码是否正确。如果认证成功,用户就可以根据其被赋予的权限访问相应的数据库、集合和文档。
    • db.grantRolesToUser(user_name, roles):用于向用户授予角色。roles是一个包含角色信息的数组。例如:db.grantRolesToUser("john",[{"role":"readOnly","db":"mydb"}])会向john用户授予对mydb数据库的只读权限。
    • db.revokeRolesFromUser(user_name, roles):用于从用户那里收回角色。例如:db.revokeRolesFromUser("john",[{"role":"readOnly","db":"mydb"}])会从john用户那里收回对mydb数据库的只读权限。

http://www.ppmy.cn/embedded/129150.html

相关文章

【Linux】进程状态

文章目录 进程三状态转换Linux进程状态R状态S状态D状态如何暂停进程t状态x状态Z状态 总结 进程三状态转换 新建态: 操作系统已经分配了资源给进程了。 就绪态: 已经具备了执行的所有必有的条件,但是由于各种原因,暂时无法运行&…

主流网络设备的组网方式和配置命令

在现代网络中,配置和管理主流网络设备是网络管理员和工程师必须掌握的技能。本文将详细介绍主流网络设备的组网方式及其常用配置命令,涵盖路由器、交换机、防火墙等设备。 一、路由器 1. 组网方式 路由器是连接不同网络段的重要设备,其主要功…

SpringBoot +Vue3前后端分离项目入门基础实例二

项目说明 项项目名称使用框架说明后端项目springboot_vue_element_demoSpringBoot + MyBatis-plus + MySQL完成基本的增删改查操作API前端项目vue-projectVue3 + ElementUI plus + axios界面展示,调用后端API项目文档目录 SpringBoot +Vue3前后端分离项目入门基础实例一 Spri…

08 算法评价标准:空间复杂度(大 O 渐进表示法、常见空间复杂度及案例分析、空间换时间)

目录 1 空间复杂度的理解 1.1 基本概念 1.2 大 O 渐进表示法 1.3 空间复杂度的意义 2 常见的空间复杂度 3 空间复杂度案例分析 3.1 常数级空间复杂度 O(1) 3.2 线性空间复杂度 O(n) 3.3 递归函数的空间复杂度 3.4 平方级空间复杂度 O(n^2) 4 空间复杂度与时间复杂度…

010_django基于spark的电力能耗数据分析系统的设计与实现2024_s120960s

目录 系统展示 开发背景 代码实现 项目案例 获取源码 博主介绍:CodeMentor毕业设计领航者、全网关注者30W群落,InfoQ特邀专栏作家、技术博客领航者、InfoQ新星培育计划导师、Web开发领域杰出贡献者,博客领航之星、开发者头条/腾讯云/AW…

HALCON数据结构之矩阵

1.1矩阵的创建、设置和访问 *1、矩阵的创建*创建单位矩阵 create_matrix (3, 3, identity, MatrixID1)*创建一个全是常数的矩阵 create_matrix (3, 3, 7, MatrixID2)*为主对角线上的所有元素都被设置为参数Value的值 create_matrix (3, 3, [3,7,1], MatrixID3)*为矩阵的所有元…

模型的部署:服务端与客户端建立连接(Flask)

目录 一、服务端部署(使用Flask) 1.安装Flask 2.加载模型(这里以识别图片的类型模型为例) 3.定义API端点 4.运行Flask应用 二、客户端请求 1.安装HTTP客户端库 2.发送请求 请求成功示例: 监控与日志 总结 在…

C语言实践中的补充知识 Ⅱ

一、在C语言中,% 7.2f 是一个格式说明符,通常用于printf或sprintf等函数中,用于控制浮点数的输出格式。 这里的 % 是格式说明符的开始符号。 7 表示字段宽度。这意味着输出的浮点数将至少占用7个字符的宽度。如果浮点数的实际宽度小于7个字符…