【数据库】MongoDB

文章目录

    • @[toc]
      • 数据库操作
        • 查询数据库
        • 切换数据库
        • 查询当前数据库
        • 删除数据库
        • 查询数据库版本
      • 数据集合操作
        • 创建数据集合
        • 查询数据集合
        • 删除数据集合
      • 数据插入
        • 插入id重复的数据
      • 数据更新
        • 数据更新一条
          • 丢失其他字段
          • 保留其他字段
        • 数据批量更新
      • 数据删除
        • 数据删除一条
        • 数据批量删除
      • 数据查询
        • 创建数据集合
        • 数据查询一条
        • 查询格式化输出
        • 运算符
          • 比较运算符
          • 范围运算符
          • 逻辑运算符
        • 正则表达式查询
        • 分页
          • 查询前两条数据
          • 略过前两条数据
        • 自定义查询
        • 投影
        • 排序
        • 统计
        • 去重
        • 聚合操作
          • $group
            • 按指定字段分组
            • 不进行分组
          • $project
            • 投影
            • 别名
          • $match
          • $sort
          • $limit
          • $skip

因上努力

个人主页:丷从心·

系列专栏:数据库

果上随缘


数据库操作

查询数据库
show dbs
切换数据库
  • MongoDB中无需手动创建数据库,当切换到一个不存在的数据库时,会自动创建一个数据库
use student_info
查询当前数据库
db
删除数据库
use student_infodb.dropDatabase()
查询数据库版本
db.version()

数据集合操作

创建数据集合
db.createCollection('class_1')
  • 也可以不用手动创建数据集合,当使用一个不存在的数据集合时,会自动创建一个数据集合
查询数据集合
show collections
show tables
删除数据集合
db.class_1.drop()

数据插入

use student_infodb.class_1.insertOne({'name': 'follow__my_heart', 'age': 22})
  • 数据查询
db.class_1.find()
插入id重复的数据
db.class_1.insertOne({_id: 10010, 'name': 'follow__my_heart', 'age': 22})db.class_1.save({_id: 10010, 'name': 'follow__my_heart', 'age': 18})

数据更新

数据更新一条
丢失其他字段
db.class_1.update({'name': 'follow__my_heart'}, {'name': 'follow__your_heart'})
保留其他字段
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}})
数据批量更新
db.class_1.update({'name': 'follow__my_heart'}, {$set: {'name': 'follow__your_heart'}}, {multi: true})

数据删除

数据删除一条
db.class_1.remove({'name': 'follow__your_heart'}, {justOne: true})
数据批量删除
db.class_1.remove({'name': 'follow__my_heart'})

数据查询

创建数据集合
use book_managerdb.getCollection('person_info').insert({name: '郭靖',hometown: '蒙古',age: 20,gender: true
})
db.getCollection('person_info').insert({name: '黄蓉',hometown: '桃花岛',age: 18,gender: false
})
db.getCollection('person_info').insert({name: '华筝',hometown: '蒙古',age: 18,gender: false
})
db.getCollection('person_info').insert({name: '黄药师',hometown: '桃花岛',age: 40,gender: true
})
db.getCollection('person_info').insert({name: '段誉',hometown: '大理',age: 16,gender: true
})
db.getCollection('person_info').insert({name: '段王爷',hometown: '大理',age: 45,gender: true
})
db.getCollection('person_info').insert({name: '洪七公',hometown: '华山',age: 18,gender: true
})use book_shopdb.getCollection('product_info').insert({_id: 100,sku: 'abc123',description: 'Single line description'
})
db.getCollection('product_info').insert({_id: 101,sku: 'abc456',description: 'First line\nSecond line'
})
db.getCollection('product_info').insert({_id: 102,sku: 'abc789',description: 'Single line description'
})
db.getCollection('product_info').insert({_id: 103,sku: 'xyz123',description: 'Many lines description'
})
db.getCollection('product_info').insert({_id: 104,sku: 'xyz456',description: 'Many lines description'
})
数据查询一条
db.person_info.findOne({'age': 18})
查询格式化输出
  • 在终端中使用
db.person_info.find().pretty()
运算符
比较运算符
db.person_info.find({age: {$gte: 18}})
范围运算符
db.person_info.find({age: {$in: [18, 45]}})
逻辑运算符
db.person_info.find({$or: [{'age': 18}, {'hometown': '桃花岛'}]})
正则表达式查询
db.product_info.find({sku: /^abc/})
db.product_info.find({sku: {$regex: '^abc'}})
分页
查询前两条数据
db.product_info.find().limit(2)
略过前两条数据
db.product_info.find().skip(2)
自定义查询
db.person_info.find({$where: function () {return this.age <= 18;}
})
投影
db.person_info.find({age: {$gte: 18}}, {'name': 1, _id: 0})
排序
db.person_info.find().sort({'age': -1})
统计
db.person_info.count({'age': {$gte: 18}})
去重
db.person_info.distinct('hometown', {'age': {$gte: 18}})
聚合操作
$group
按指定字段分组
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
  • {$sum: 1}中的1表示倍数
不进行分组
db.person_info.aggregate({$group: {_id: null, count: {$sum: 1}, avg_age: {$avg: '$age'}}
})
$project
投影
db.person_info.aggregate({$project: {_id: 0, name: 1, age: 1}
})
别名
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}, avg_age: {$avg: '$age'}}},{$project: {"性别": '$_id', "人数": '$count', "平均年龄": '$avg_age', _id: 0}}
)
$match
db.person_info.aggregate({$match: {age: {$gt: 20}}},{$group: {_id: '$gender', count: {$sum: 1}}},{$project: {"性别": '$_id', "人数": '$count', _id: 0}}
)
$sort
db.person_info.aggregate({$group: {_id: '$gender', count: {$sum: 1}}},{$sort: {count: -1}}
)
$limit
db.person_info.aggregate({$limit: 2}
)
$skip
db.person_info.aggregate({$skip: 2}
)

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

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

相关文章

Qt配置CMake出错

一个项目需要在mingw环境下编译Opencv源码&#xff0c;当我用Qt配置opencv的CMakeLists.txt时&#xff0c;出现了以下配置错误&#xff1a; 首先我根据下述博文介绍&#xff0c;手动配置了CMake&#xff0c;但仍不能解决问题。 Qt(MinGW版本)安装 - 夕西行 - 博客园 (cnblogs.…

如何将web content项目导入idea并部署到tomcat

将Web Content项目导入IntelliJ IDEA并部署到Tomcat主要涉及以下几个步骤&#xff1a; 1. 导入Web Content项目 打开IntelliJ IDEA。选择“File” -> “New” -> “Project from Existing Sources…”。浏览到你的Web Content项目的文件夹&#xff0c;并选择它。Intell…

【书生浦语第二期实战营学习笔记作业(七)】

课程文档&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/opencompass/readme.md 课程作业&#xff1a;https://github.com/InternLM/Tutorial/blob/camp2/opencompass/homework.md OpenCompass 大模型评测实战 1. 大模型的评测1.1 大模型评测如何促进发展1.2 大…

http是什么?http的基础知识教程详解(2024-04-24)

1、http的概念 HTTP&#xff08;超文本传输协议&#xff0c;HyperText Transfer Protocol&#xff09;是一种用于分布式、协作式、超媒体信息系统的应用层协议。 HTTP 是万维网&#xff08;WWW&#xff09;的数据通信的基础&#xff0c;设计目的是确保客户端与服务器之间的通…

LangSmith帮助测试大模型系统

LangSmith是评估大模型能力好坏的评估工具,能够量化评估基于大模型的系统的效果。LangSmith通过记录langchain构建的大模型应用的中间过程,从而能够更好的调整提示词等中间过程做优化。想要使用LangSmith首先进入他的设置页面,https://smith.langchain.com/settings注册一个…

node基础 第二篇

01 ffmpeg开源跨平台多媒体处理工具&#xff0c;处理音视频&#xff0c;剪辑&#xff0c;合并&#xff0c;转码等 FFmpeg 的主要功能和特性:1.格式转换:FFmpeg 可以将一个媒体文件从一种格式转换为另一种格式&#xff0c;支持几乎所有常见的音频和视频格式&#xff0c;包括 MP…

经典的目标检测算法有哪些?

一、经典的目标检测算法有哪些&#xff1f; 目标检测算法根据其处理流程可以分为两大类&#xff1a;One-Stage&#xff08;单阶段&#xff09;算法和Two-Stage&#xff08;两阶段&#xff09;算法。以下是一些经典的目标检测算法&#xff1a; 单阶段算法: YOLO (You Only Loo…

Mudem,打造私密安全、高效稳定的私人空间

Mudem 是 Codigger 平台中的一个关键组件&#xff0c;它提供基础通讯服务&#xff0c;确保不同类型的机器之间可以进行安全和高效的连接。它其设计理念在于将本地机器、公有云以及私有云上的设备无缝地整合为一个可远程在线访问的工作站&#xff08;Workstation&#xff09;。这…

2024深圳杯(东三省)数学建模挑战赛D题:音板的振动模态分析与参数识别思路代码成品论文分析

​ 更新完整代码和成品完整论文 《2024深圳杯&东三省数学建模思路代码成品论文》↓↓↓ https://www.yuque.com/u42168770/qv6z0d/zx70edxvbv7rheu7?singleDoc# 问题重述 深圳杯&#xff08;东三省&#xff09;数学建模挑战赛2024D题&#xff1a;音板的振动模态分析与…

代码解析 Textual_inversion

代码解析 Textual_inversion 一 Embedding部分 一 Embedding部分

李沐60_机器翻译数据集——自学笔记

!pip install d2limport os import torch from d2l import torch as d2l下载和预处理数据集 在这个将英语翻译成法语的机器翻译问题中&#xff0c; 英语是源语言&#xff08;source language&#xff09;&#xff0c; 法语是目标语言&#xff08;target language&#xff09;。…

网络安全之CSRFSSRF漏洞(上篇)(技术进阶)

目录 一&#xff0c;CSRF篇 二&#xff0c;认识什么是CSRF 三&#xff0c;实现CSRF攻击的前提 四&#xff0c;实战演练 【1】案例1 【2】案例2 【3】案例3 【4】案例4&#xff08;metinfo&#xff09; 一&#xff0c;CSRF篇 二&#xff0c;认识什么是CSRF CSRF&#x…