Python私教MongoDB快速入门教程

这篇具有很好参考价值的文章主要介绍了Python私教MongoDB快速入门教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Docker安装MongoDB

拉取镜像:

docker pull mongo:6.0.2

创建容器:

docker run --name mongo -d -p 27017:27017 mongo:6.0.2

设置用户名和密码:

# 创建mongo容器后,进入容器
docker exec -it mongo bash

# 进入mongo shell
mongosh

# 进入admin数据库
use admin

# 创建用户名和密码
db.createUser({user:'zhangdapeng',pwd:'zhangdapeng520',roles:[{role:'root',db:'admin'}]})

校验用户名和密码:

# 认证登录db.auth('用户名','密码'),打印1则代表认证通过
db.auth('zhangdapeng','zhangdapeng520')

数据库管理

创建数据库:

use db;

查看所有数据库:

show dbs

插入一条数据,再查看所有数据库:

db.db.insertOne({"name":"张大鹏"})
show dbs

删除数据库:

db.dropDatabase()
show dbs

集合管理

集合相当于一张表,创建一张user集合:

use test
db.createCollection("user")

查看所有的集合:

show collections

创建固定集合 mycol,整个集合空间大小 6142800 B, 文档最大个数为 10000 个。

db.createCollection("mycol", {capped: true, autoIndexId: true, size: 6142800, max: 10000 })
show collections

在 MongoDB 中,你不需要创建集合。当你插入一些文档时,MongoDB 会自动创建集合。

db.mycol2.insert({"name" : "张大鹏"})
show collections

删除集合:

db.mycol2.drop()
show collections

新增文档

向user集合中新增张三:

db.user.insert({name: '张三', age: 22})
show collections

查询所有的用户:

db.user.find()

向user集合中新增李四:

db.user.insertOne({name: '李四', age: 24})
db.user.find()

向user集合中新增赵六和田七:

db.user.insertMany([{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

更新文档

update() 方法

update() 方法用于更新已存在的文档。语法格式如下:

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

参数说明:

  • query : update的查询条件,类似sql update查询内where后面的。
  • update : update的对象和一些更新的操作符(如 , , ,inc…)等,也可以理解为sql update查询内set后面的
  • upsert : 可选,这个参数的意思是,如果不存在update的记录,是否插入objNew,true为插入,默认是false,不插入。
  • multi : 可选,mongodb 默认是false,只更新找到的第一条记录,如果这个参数为true,就把按条件查出来多条记录全部更新。
  • writeConcern :可选,抛出异常的级别。

实战案例

将张三修改为张三333:

db.user.find()
db.user.update({'name':'张三'},{$set:{'name':'张三333'}})
db.user.find()

更多实例

只更新第一条记录:

db.col.update( { "count" : { $gt : 1 } } , { $set : { "test2" : "OK"} } );

全部更新:

db.col.update( { "count" : { $gt : 3 } } , { $set : { "test2" : "OK"} },false,true );

只添加第一条:

db.col.update( { "count" : { $gt : 4 } } , { $set : { "test5" : "OK"} },true,false );

全部添加进去:

db.col.update( { "count" : { $gt : 5 } } , { $set : { "test5" : "OK"} },true,true );

全部更新:

db.col.update( { "count" : { $gt : 15 } } , { $inc : { "count" : 1} },false,true );

只更新第一条记录:

db.col.update( { "count" : { $gt : 10 } } , { $inc : { "count" : 1} },false,false );

使用updateOne修改

db.user.updateOne({"name":"李四"},{$set:{"age":34}})

使用updateMany修改

db.user.updateMany({"age":{$gt:30}},{$set:{"age":33}})

删除文档

实战案例

删除张三:

db.user.find()
db.col.remove({'name':'张三'})
db.user.find()

deleteOne删除

删除张三333:

db.user.find()
db.user.deleteOne({'name':'张三333'})
db.user.find()

deleteMany删除

删除李四:

db.user.find()
db.user.deleteMany({'name':'李四'})
db.user.find()

删除年龄大于30的用户:

db.user.deleteMany({"age":{$gt:30}})

findOneAndDelete删除

删除赵六:

db.user.find()
db.user.findOneAndDelete({'name':'赵六'})
db.user.find()

查询文档

条件运算符

操作 格式 范例 RDBMS中的类似语句
等于 {<key>:<value>} db.col.find({"by":"张三"}).pretty() where by = '张三'
小于 {<key>:{$lt:<value>}} db.col.find({"likes":{$lt:50}}).pretty() where likes < 50
小于或等于 {<key>:{$lte:<value>}} db.col.find({"likes":{$lte:50}}).pretty() where likes <= 50
大于 {<key>:{$gt:<value>}} db.col.find({"likes":{$gt:50}}).pretty() where likes > 50
大于或等于 {<key>:{$gte:<value>}} db.col.find({"likes":{$gte:50}}).pretty() where likes >= 50
不等于 {<key>:{$ne:<value>}} db.col.find({"likes":{$ne:50}}).pretty() where likes != 50

逻辑运算符

and运算:

db.col.find({key1:value1, key2:value2}).pretty()

or运算:

db.col.find(
   {
      $or: [
         {key1: value1}, {key2:value2}
      ]
   }
).pretty()

实战案例

查询名字叫张三的:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find({"name":"张三"})

查询年龄小于30的:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find({"age":{$lt:30}})

查看年龄小于30且大于25的:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find({"age":{$lt:30,$gt:25}})

查看名字叫张三或者名字叫李四的:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find({$or:[{"name":"张三"},{"name":"l"}]})

分页查询

实战案例

每页2条数据,查询第2页:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find().limit(2).skip(2)

根据年龄排序,每页2条数据,查询第2页:在 MongoDB 中使用 sort() 方法对数据进行排序,sort() 方法可以通过参数指定排序的字段,并使用 1 和 -1 来指定排序的方式,其中 1 为升序排列,而 -1 是用于降序排列。

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.find().sort({}).limit(2).skip(2)

聚合查询

聚合语法

表达式 描述 实例
$sum 计算总和。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { s u m : " sum : " sum:"likes"}}}])
$avg 计算平均值 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { a v g : " avg : " avg:"likes"}}}])
$min 获取集合中所有文档对应值得最小值。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { m i n : " min : " min:"likes"}}}])
$max 获取集合中所有文档对应值得最大值。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", num_tutorial : { m a x : " max : " max:"likes"}}}])
$push 将值加入一个数组中,不会判断是否有重复的值。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { p u s h : " push: " push:"url"}}}])
$addToSet 将值加入一个数组中,会判断是否有重复的值,若相同的值在数组中已经存在了,则不加入。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", url : { a d d T o S e t : " addToSet : " addToSet:"url"}}}])
$first 根据资源文档的排序获取第一个文档数据。 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", first_url : { f i r s t : " first : " first:"url"}}}])
$last 根据资源文档的排序获取最后一个文档数据 db.mycol.aggregate([{KaTeX parse error: Expected '}', got 'EOF' at end of input: …roup : {_id : "by_user", last_url : { l a s t : " last : " last:"url"}}}])

常用操作

这里我们介绍一下聚合框架中常用的几个操作:

  • $project:修改输入文档的结构。可以用来重命名、增加或删除域,也可以用于创建计算结果以及嵌套文档。
  • m a t c h :用于过滤数据,只输出符合条件的文档。 match:用于过滤数据,只输出符合条件的文档。 match:用于过滤数据,只输出符合条件的文档。match使用MongoDB的标准查询操作。
  • $limit:用来限制MongoDB聚合管道返回的文档数。
  • $skip:在聚合管道中跳过指定数量的文档,并返回余下的文档。
  • $unwind:将文档中的某一个数组类型字段拆分成多条,每条包含数组中的一个值。
  • $group:将集合中的文档分组,可用于统计结果。
  • $sort:将输入文档排序后输出。
  • $geoNear:输出接近某一地理位置的有序文档。

实战案例

查询用户总数:

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询
db.user.countDocuments()

查询用户平均年龄:文章来源地址https://www.toymoban.com/news/detail-813618.html

# 删除集合
db.user.drop()

# 批量新增
db.user.insertMany([{name: '李四', age: 34},{name: '张三', age: 23},{name: '赵六', age: 26},{name: '田七', age: 27}])
db.user.find()

# 查询用户数量和平均年龄
db.user.aggregate([{$group:{_id: null, total_num: {$sum:1},total_avg: {$avg: "$age"}}}])

到了这里,关于Python私教MongoDB快速入门教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言快速入门教程1快速入门 2指令 3条件选择

    C是一种编程语言,1972年由Dennis Ritchie在美国AT T的贝尔实验室开发。C语言变得很流行,因为它很简单,很容易使用。今天经常听到的一个观点是--\\\"C语言已经被C++、Python和Java等语言所取代,所以今天何必再去学习C语言\\\"。我很不赞同这种观点。这有几个原因。这些原因如下:

    2024年02月03日
    浏览(46)
  • Git快速入门篇—— Windows版本淘宝镜像快速下载安装详细步骤及简单入门教程(附带图文教程)

    前言:我们平时在整理代码的时候,尤其是与别人一起开发项目的时候,常常涉及到代码的更新,因此代码版本问题成了一个很头痛的事。而git正是为了解决这种问题而诞生。本文将详细介绍如何通过淘宝镜像进行git的安装以及git的简单入门技巧。 下一章: git与远程仓库的交

    2024年02月03日
    浏览(89)
  • angular快速入门教程

    安装: 1.安装node.js 2.安装angular 3.创建项目 4.文件结构: 5.运行 组件: 项目根模块:app.module.ts 定义的组件都需要在app.module.ts文件里先进行import引入 然后在@NgModule({deckartions:[]})声明 定义组件模板的两个方式: 1.使用templateurl引用一个html文件 2.使用template +es6的模板字符串

    2023年04月08日
    浏览(44)
  • Eslint 快速入门教程

    eslint 是一个代码检查工具包,用来检查代码的规范。 而相比之下,prettier 是一个代码格式化工具。 解决代码风格不一致的问题 可以实现自动修复一些结构、风格问题 默认是只修复 js 语法的,其他的语言和框架需要配置 高灵活度、配置自由 对于团队来说,统一项目的代码

    2024年01月16日
    浏览(81)
  • Git 新手快速入门教程

    1. 何为版本控制 版本控制是一种记录文件变化的系统,可以跟踪文件的修改历史,并允许用户在不同版本之间进行比较、恢复或合并。它主要用于软件开发过程中管理代码的变更,但也可以应用于任何需要跟踪文件变更的场景。 版本控制系统(VCS)可以帮助团队协作开发,

    2024年04月26日
    浏览(60)
  • Lua 快速入门 · 教程笔记

    笔记的内容出自 Bilibili 上的这两个视频: Lua语言快速入门精通(第 1 ~ 6 集) 【无废话30分钟】Lua快速入门教程 - 4K超清 前者组成了笔记的主要结构,后者作为前者的补充。笔记主要用于供笔者个人或读者回顾知识点,如有纰漏,烦请指出 : ) 一般是使用 C/C++ 来实现功能,用

    2024年01月20日
    浏览(47)
  • c++教程1快速入门

    欢迎来到令人兴奋的C++编程世界。本章将演示如何创建简单的C++程序,以及如何在程序中存储数据。 C++简介 安装编译器 编写第一个程序 编译和运行程序 创建变量 使用变量数组 使用向量数组 声明常量 C++是C编程语言的扩展,早在1972年由Dennis Ritchie首次在UNIX操作系统上实现

    2024年02月04日
    浏览(45)
  • Makefile教程1 快速入门

    Makefile用于帮助决定大型程序的哪些部分需要重新编译。在绝大多数情况下,都会编译C或C++文件。 其他语言通常有自己的工具,其用途与Make类似。当您需要根据已更改的文件运行一系列指令时,Make也可以在编译之外使用。 本教程将重点介绍C/C++编译。 下面是您可以使用Ma

    2024年02月05日
    浏览(58)
  • Docker 快速上手学习入门教程

    目录 1、docker 的基础概念 2、怎样打包和运行一个应用程序? 3、如何对 docker 中的应用程序进行修改? 4、如何对创建的镜像进行共享? 5、如何使用 volumes 名称对容器中的数据进行存储?// 数据挂载 6、另一种挂载方式:目录挂载 7、实现容器之间的相互通信 8、使用 Docker

    2024年02月09日
    浏览(41)
  • React.js快速入门教程

    React.js是一个由Facebook开发的用于构建用户界面的JavaScript库。它主要用于构建单页面应用程序(SPA),可以轻松地创建交互性强、快速响应的用户界面。 React.js的特点 1.声明式设计 −React采用声明范式,可以轻松描述应用。 2.高效 −React通过对DOM的模拟,最大限度地减少与D

    2024年01月22日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包