国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Python私教MongoDB快速入門教程

這篇具有很好參考價(jià)值的文章主要介紹了Python私教MongoDB快速入門教程。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Docker安裝MongoDB

拉取鏡像:

docker pull mongo:6.0.2

創(chuàng)建容器:

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

設(shè)置用戶名和密碼:

# 創(chuàng)建mongo容器后,進(jìn)入容器
docker exec -it mongo bash

# 進(jìn)入mongo shell
mongosh

# 進(jìn)入admin數(shù)據(jù)庫
use admin

# 創(chuàng)建用戶名和密碼
db.createUser({user:'zhangdapeng',pwd:'zhangdapeng520',roles:[{role:'root',db:'admin'}]})

校驗(yàn)用戶名和密碼:

# 認(rèn)證登錄db.auth('用戶名','密碼'),打印1則代表認(rèn)證通過
db.auth('zhangdapeng','zhangdapeng520')

數(shù)據(jù)庫管理

創(chuàng)建數(shù)據(jù)庫:

use db;

查看所有數(shù)據(jù)庫:

show dbs

插入一條數(shù)據(jù),再查看所有數(shù)據(jù)庫:

db.db.insertOne({"name":"張大鵬"})
show dbs

刪除數(shù)據(jù)庫:

db.dropDatabase()
show dbs

集合管理

集合相當(dāng)于一張表,創(chuàng)建一張user集合:

use test
db.createCollection("user")

查看所有的集合:

show collections

創(chuàng)建固定集合 mycol,整個(gè)集合空間大小 6142800 B, 文檔最大個(gè)數(shù)為 10000 個(gè)。

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

在 MongoDB 中,你不需要?jiǎng)?chuàng)建集合。當(dāng)你插入一些文檔時(shí),MongoDB 會(huì)自動(dòng)創(chuàng)建集合。

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>
   }
)

參數(shù)說明:

  • query : update的查詢條件,類似sql update查詢內(nèi)where后面的。
  • update : update的對象和一些更新的操作符(如 , , ,inc…)等,也可以理解為sql update查詢內(nèi)set后面的
  • upsert : 可選,這個(gè)參數(shù)的意思是,如果不存在update的記錄,是否插入objNew,true為插入,默認(rèn)是false,不插入。
  • multi : 可選,mongodb 默認(rèn)是false,只更新找到的第一條記錄,如果這個(gè)參數(shù)為true,就把按條件查出來多條記錄全部更新。
  • writeConcern :可選,拋出異常的級別。

實(shí)戰(zhàn)案例

將張三修改為張三333:

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

更多實(shí)例

只更新第一條記錄:

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 );

全部添加進(jìn)去:

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}})

刪除文檔

實(shí)戰(zhàn)案例

刪除張三:

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()

查詢文檔

條件運(yùn)算符

操作 格式 范例 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

邏輯運(yùn)算符

and運(yùn)算:

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

or運(yùn)算:

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

實(shí)戰(zhàn)案例

查詢名字叫張三的:

# 刪除集合
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"}]})

分頁查詢

實(shí)戰(zhàn)案例

每頁2條數(shù)據(jù),查詢第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)

根據(jù)年齡排序,每頁2條數(shù)據(jù),查詢第2頁:在 MongoDB 中使用 sort() 方法對數(shù)據(jù)進(jìn)行排序,sort() 方法可以通過參數(shù)指定排序的字段,并使用 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)

聚合查詢

聚合語法

表達(dá)式 描述 實(shí)例
$sum 計(jì)算總和。 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 計(jì)算平均值 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 獲取集合中所有文檔對應(yīng)值得最小值。 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 獲取集合中所有文檔對應(yīng)值得最大值。 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 將值加入一個(gè)數(shù)組中,不會(huì)判斷是否有重復(fù)的值。 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 將值加入一個(gè)數(shù)組中,會(huì)判斷是否有重復(fù)的值,若相同的值在數(shù)組中已經(jīng)存在了,則不加入。 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 根據(jù)資源文檔的排序獲取第一個(gè)文檔數(shù)據(jù)。 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 根據(jù)資源文檔的排序獲取最后一個(gè)文檔數(shù)據(jù) 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"}}}])

常用操作

這里我們介紹一下聚合框架中常用的幾個(gè)操作:

  • $project:修改輸入文檔的結(jié)構(gòu)??梢杂脕碇孛?、增加或刪除域,也可以用于創(chuàng)建計(jì)算結(jié)果以及嵌套文檔。
  • m a t c h :用于過濾數(shù)據(jù),只輸出符合條件的文檔。 match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。 match:用于過濾數(shù)據(jù),只輸出符合條件的文檔。match使用MongoDB的標(biāo)準(zhǔn)查詢操作。
  • $limit:用來限制MongoDB聚合管道返回的文檔數(shù)。
  • $skip:在聚合管道中跳過指定數(shù)量的文檔,并返回余下的文檔。
  • $unwind:將文檔中的某一個(gè)數(shù)組類型字段拆分成多條,每條包含數(shù)組中的一個(gè)值。
  • $group:將集合中的文檔分組,可用于統(tǒng)計(jì)結(jié)果。
  • $sort:將輸入文檔排序后輸出。
  • $geoNear:輸出接近某一地理位置的有序文檔。

實(shí)戰(zhàn)案例

查詢用戶總數(shù):

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

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

# 查詢
db.user.countDocuments()

查詢用戶平均年齡:文章來源地址http://www.zghlxwxcb.cn/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()

# 查詢用戶數(shù)量和平均年齡
db.user.aggregate([{$group:{_id: null, total_num: {$sum:1},total_avg: {$avg: "$age"}}}])

到了這里,關(guān)于Python私教MongoDB快速入門教程的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C語言快速入門教程1快速入門 2指令 3條件選擇

    C語言快速入門教程1快速入門 2指令 3條件選擇

    C是一種編程語言,1972年由Dennis Ritchie在美國AT T的貝爾實(shí)驗(yàn)室開發(fā)。C語言變得很流行,因?yàn)樗芎唵危苋菀资褂?。今天?jīng)常聽到的一個(gè)觀點(diǎn)是--\\\"C語言已經(jīng)被C++、Python和Java等語言所取代,所以今天何必再去學(xué)習(xí)C語言\\\"。我很不贊同這種觀點(diǎn)。這有幾個(gè)原因。這些原因如下:

    2024年02月03日
    瀏覽(35)
  • Git快速入門篇—— Windows版本淘寶鏡像快速下載安裝詳細(xì)步驟及簡單入門教程(附帶圖文教程)

    Git快速入門篇—— Windows版本淘寶鏡像快速下載安裝詳細(xì)步驟及簡單入門教程(附帶圖文教程)

    前言:我們平時(shí)在整理代碼的時(shí)候,尤其是與別人一起開發(fā)項(xiàng)目的時(shí)候,常常涉及到代碼的更新,因此代碼版本問題成了一個(gè)很頭痛的事。而git正是為了解決這種問題而誕生。本文將詳細(xì)介紹如何通過淘寶鏡像進(jìn)行g(shù)it的安裝以及git的簡單入門技巧。 下一章: git與遠(yuǎn)程倉庫的交

    2024年02月03日
    瀏覽(31)
  • angular快速入門教程

    安裝: 1.安裝node.js 2.安裝angular 3.創(chuàng)建項(xiàng)目 4.文件結(jié)構(gòu): 5.運(yùn)行 組件: 項(xiàng)目根模塊:app.module.ts 定義的組件都需要在app.module.ts文件里先進(jìn)行import引入 然后在@NgModule({deckartions:[]})聲明 定義組件模板的兩個(gè)方式: 1.使用templateurl引用一個(gè)html文件 2.使用template +es6的模板字符串

    2023年04月08日
    瀏覽(18)
  • Eslint 快速入門教程

    Eslint 快速入門教程

    eslint 是一個(gè)代碼檢查工具包,用來檢查代碼的規(guī)范。 而相比之下,prettier 是一個(gè)代碼格式化工具。 解決代碼風(fēng)格不一致的問題 可以實(shí)現(xiàn)自動(dòng)修復(fù)一些結(jié)構(gòu)、風(fēng)格問題 默認(rèn)是只修復(fù) js 語法的,其他的語言和框架需要配置 高靈活度、配置自由 對于團(tuán)隊(duì)來說,統(tǒng)一項(xiàng)目的代碼

    2024年01月16日
    瀏覽(21)
  • Git 新手快速入門教程

    Git 新手快速入門教程

    1. 何為版本控制 版本控制是一種記錄文件變化的系統(tǒng),可以跟蹤文件的修改歷史,并允許用戶在不同版本之間進(jìn)行比較、恢復(fù)或合并。它主要用于軟件開發(fā)過程中管理代碼的變更,但也可以應(yīng)用于任何需要跟蹤文件變更的場景。 版本控制系統(tǒng)(VCS)可以幫助團(tuán)隊(duì)協(xié)作開發(fā),

    2024年04月26日
    瀏覽(26)
  • c++教程1快速入門

    c++教程1快速入門

    歡迎來到令人興奮的C++編程世界。本章將演示如何創(chuàng)建簡單的C++程序,以及如何在程序中存儲(chǔ)數(shù)據(jù)。 C++簡介 安裝編譯器 編寫第一個(gè)程序 編譯和運(yùn)行程序 創(chuàng)建變量 使用變量數(shù)組 使用向量數(shù)組 聲明常量 C++是C編程語言的擴(kuò)展,早在1972年由Dennis Ritchie首次在UNIX操作系統(tǒng)上實(shí)現(xiàn)

    2024年02月04日
    瀏覽(22)
  • Makefile教程1 快速入門

    Makefile教程1 快速入門

    Makefile用于幫助決定大型程序的哪些部分需要重新編譯。在絕大多數(shù)情況下,都會(huì)編譯C或C++文件。 其他語言通常有自己的工具,其用途與Make類似。當(dāng)您需要根據(jù)已更改的文件運(yùn)行一系列指令時(shí),Make也可以在編譯之外使用。 本教程將重點(diǎn)介紹C/C++編譯。 下面是您可以使用Ma

    2024年02月05日
    瀏覽(37)
  • Lua 快速入門 · 教程筆記

    Lua 快速入門 · 教程筆記

    筆記的內(nèi)容出自 Bilibili 上的這兩個(gè)視頻: Lua語言快速入門精通(第 1 ~ 6 集) 【無廢話30分鐘】Lua快速入門教程 - 4K超清 前者組成了筆記的主要結(jié)構(gòu),后者作為前者的補(bǔ)充。筆記主要用于供筆者個(gè)人或讀者回顧知識(shí)點(diǎn),如有紕漏,煩請指出 : ) 一般是使用 C/C++ 來實(shí)現(xiàn)功能,用

    2024年01月20日
    瀏覽(23)
  • React.js快速入門教程

    React.js是一個(gè)由Facebook開發(fā)的用于構(gòu)建用戶界面的JavaScript庫。它主要用于構(gòu)建單頁面應(yīng)用程序(SPA),可以輕松地創(chuàng)建交互性強(qiáng)、快速響應(yīng)的用戶界面。 React.js的特點(diǎn) 1.聲明式設(shè)計(jì) ?React采用聲明范式,可以輕松描述應(yīng)用。 2.高效 ?React通過對DOM的模擬,最大限度地減少與D

    2024年01月22日
    瀏覽(23)
  • Spring Integration 快速入門教程

    本文通過小的實(shí)際示例介紹Spring Integration(SI)的核心概念。Spring Integration提供了許多功能強(qiáng)大的組件,這些組件可以極大地增強(qiáng)企業(yè)架構(gòu)內(nèi)系統(tǒng)和流程的互連互通。 它實(shí)現(xiàn)了一些優(yōu)秀且常用的設(shè)計(jì)模式,幫助開發(fā)人員避免從頭設(shè)計(jì)自己的模式。我們將探討SI如何在企業(yè)級應(yīng)用程

    2024年02月03日
    瀏覽(27)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包