欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python-pymongo常用查詢方法含聚合問題

 更新時間:2023年05月08日 09:28:48   作者:L'y  
這篇文章主要介紹了python-pymongo常用查詢方法含聚合問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

普通查詢

按照所需字段排序

db_set.find().sort("field_name ",pymongo.ASCENDING) --升序
db_set.find().sort("field_name ",pymongo.DESCENDING) --降序

查詢數據庫表的全部內容

# 第一種:
 db_set.find({})
#第二種:
db_set.find()

精確查詢

db_set.find({“field_name”:”value”})
db_set.find({“field_name”:”value”, “field_name”:”value”})

只返回所需要的字段信息

find的第二參數可以幫助我們只把需要的鍵值信息返回,需要將我們需要的鍵指定為1,另外默認的”_id”默認是返回的,我們不需要它返回的話將它的值設為0

db_set.find({}, {“field_name_one”:1, “field_name_two”:1,”_id”:0})

比較查詢

首先 $lt和<,$lte和<=,$gt和>,gte和>=,ne和!=是一一對應的

db_set.find({"field_name": {"$lt": value, "$gt": value}})

關聯(lián)查詢

如果只想查詢一個鍵的多個值,或取除某個值之外所有的數據那么就用到了, $in和$nin

#比如我只想獲取field_name為1,5,8的數據:
db_set.find({"field_name": {"$in": [1,5,8]}})
#如果想獲取field_name為5之外的所有數據:
db_set.find({"field_name": {"$nin": [5]}})

多條件模糊查詢

$regex為模糊查詢的字符串提供正則表達式功能

db_set.find({"$or": [{"field_name": {'$regex': value}},{"field_name": {'$regex': value}}]})

聚合

語法格式:db.集合名稱.aggregate([{管道:{表達式}}])

list_a = list(ROLE_TREE.aggregate([
    {"$group":
        {
            "_id": '$update_time',  # 我想查詢的字段
            "counter": {"$sum": 1}  # 產生的數量
        }
    }
]))
print(list_a)
res= [{'_id': 1649238526, 'counter': 1}, {'_id': 1649405332, 'counter': 1}, {'_id': 1649405568, 'counter': 1}, {'_id': 1649237591, 'counter': 1}, {'_id': 1649237314, 'counter': 1}, {'_id': 1649405347, 'counter': 1}]

常用管道

  • $group:將集合中的文檔分組,可用于統(tǒng)計結果
  • $match:過濾數據,只輸出符合條件的文檔
  • $project:修改輸入文檔的結構,如重命名、增加、刪除字段、創(chuàng)建計算結果
  • $sort:將輸入文檔排序后輸出
  • $limit:限制聚合管道返回的文檔數
  • $skip:跳過指定數量的文檔,并返回余下的文檔

常用表達式

  • $sum:計算總和,$sum:1同count表示計數
  • $avg:計算平均值
  • $min:獲取最小值
  • $max:獲取最大值
  • $push:在結果文檔中插入值到一個數組中
  • $first:根據資源文檔的排序獲取第一個文檔數據
  • $last:根據資源文檔的排序獲取最后一個文檔數據

$group

將集合中的文檔分組,可用于統(tǒng)計結果 ,_id表示分組的依據,使用某個字段的格式為’$字段’

list(ROLE_TREE.aggregate([
    {"$group":
        {
            "_id": '$update_time',  # 我想查詢的字段
            "counter": {"$sum": 1}  # 產生的數量
        }
    }
]))
# "counter"為自定義名稱,用來存儲結果的變量

Group by null:將集合中所有文檔分為一組

list_a = list(ROLE_TREE.aggregate([
    {"$group":
        {
            "_id": None,  # 為空
            "counter": {"$sum": 1}  # 產生的數量
        }
    }
]))
res = [{'_id': None, 'counter': 6}]

$match

用于過濾數據,只輸出符合條件的文檔,使用MongoDB的標準查詢操作

list_a = list(ROLE_TREE.aggregate([
    {'$match': {'update_time': {'$lt': int(time.time())}}}, # 查找
    {'$group': {'_id': '$update_time', 'counter': {'$sum': 1}}} # 分組
]))
res= [{'_id': 1649405332, 'counter': 1}, {'_id': 1649405347, 'counter': 1}, {'_id': 1649237314, 'counter': 1}, {'_id': 1649237591, 'counter': 1}, {'_id': 1649405568, 'counter': 1}, {'_id': 1649238526, 'counter': 1}]
# ---------------------------------
list_a = list(ROLE_TREE.aggregate([
    {'$match': {'update_time': int(time.time())}},  # 查找
    # {'$group': {'_id': '$update_time', 'counter': {'$sum': 1}}} # 分組
]))
res = []

$project

修改輸入文檔的結構,如重命名、增加、刪除字段、創(chuàng)建計算結果(類似查找中投影,值為1表示顯示,值為0不顯示)

list_a = list(ROLE_TREE.aggregate([
    {"$project": {"_id": 1, "create_time": 1, 'org_id': 1}},  # _id  一定在前
    {'$group': {'_id': '$create_time', 'counter': {'$sum': 1}}}  # 分組
]))
res = [{'_id': 1649237314, 'counter': 1}, {'_id': 1649405347, 'counter': 1}, {'_id': 1649405568, 'counter': 1}, {'_id': 1649238526, 'counter': 1}, {'_id': 1649405332, 'counter': 1}, {'_id': 1649237591, 'counter': 1}]

$sort

將輸入文檔排序后輸出 ,1 升序 -1降序

list_a = list(ROLE_TREE.aggregate([
    {'$sort': {'update_time': 1}},
    {"$project": {"_id": 0, 'update_time': 1}}
]))
res = [{'update_time': 1649237314}, {'update_time': 1649237591}, {'update_time': 1649238526}, {'update_time': 1649405332}, {'update_time': 1649405347}, {'update_time': 1649405568}]

$limit

限制聚合管道返回的文檔數

list_a = list(ROLE_TREE.aggregate([
    {"$limit": 2},
    {"$project": {'_id': 1}}
]))
res=  [{'_id': '8796e0d2a75ee0d84c1fbcb5ac4e7cc5'}, {'_id': 'bbd7664aa4b1d7fbfaa0256b05a78fd1'}]

$skip

跳過指定數量的文檔,并返回余下的文檔

list_a = list(ROLE_TREE.aggregate([
    {"$skip": 3},  # 跳過
    {"$project": {'_id': 1}}
]))
res = [{'_id': '26702db7682ef817047b9681cd685987'}, {'_id': 'b64f271c735c8a57b34a0feefd292d65'}, {'_id': '5974aaaf7848fd8af6426cad375c4b62'}]

先寫skip,再寫limit

list_a = list(ROLE_TREE.aggregate([
    {"$skip": 1},  # 跳過
    {"$limit": 1},  # 分組數量
    {"$project": {'_id': 1}}
]))
res = [{'_id': 'bbd7664aa4b1d7fbfaa0256b05a78fd1'}]

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • python利用線程實現(xiàn)多任務

    python利用線程實現(xiàn)多任務

    這篇文章主要介紹了python利用線程實現(xiàn)多任務,幫助大家更好的理解和學習python,感興趣的朋友可以了解下
    2020-09-09
  • python爬取亞馬遜書籍信息代碼分享

    python爬取亞馬遜書籍信息代碼分享

    這篇文章主要介紹了python爬取亞馬遜書籍信息代碼分享,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Python 網絡編程起步(Socket發(fā)送消息)

    Python 網絡編程起步(Socket發(fā)送消息)

    現(xiàn)在開始學習網絡編程,先從簡單的UDP協(xié)議發(fā)送消息開始。我們需要有接受消息的服務端程序(Server.py)和發(fā)送消息的客戶端程序(Client)。
    2008-09-09
  • 如何基于Python代碼實現(xiàn)高精度免費OCR工具

    如何基于Python代碼實現(xiàn)高精度免費OCR工具

    這篇文章主要介紹了如何基于Python代碼實現(xiàn)高精度免費OCR工具,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-06-06
  • 5個Python使用F-String進行格式化的實用技巧分享

    5個Python使用F-String進行格式化的實用技巧分享

    F-String(格式化字符串字面值)是在Python?3.6中引入的,它是一種非常強大且靈活的字符串格式化方法,本文總結了5個實用的F-String技巧,相信一定能讓你的代碼輸出更加的美觀,快跟隨小編一起學習起來吧
    2024-03-03
  • 淺析Python四種數據類型

    淺析Python四種數據類型

    在這篇文章里,我們給大家分享了關于Python的四種數據類型相關知識點內容,有興趣的朋友們參考下。
    2018-09-09
  • 基于Python實現(xiàn)個人手機定位分析

    基于Python實現(xiàn)個人手機定位分析

    TransBigData是一個為交通時空大數據處理、分析和可視化而開發(fā)的Python包。本文就來用它實現(xiàn)個人手機定位分析,感興趣的小伙伴可以了解一下
    2023-04-04
  • 完美解決python3.7 pip升級 拒絕訪問問題

    完美解決python3.7 pip升級 拒絕訪問問題

    這篇文章主要介紹了python3.7 pip升級 拒絕訪問 解決方案,文中給大家提到了python中for循環(huán)問題,本文給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-07-07
  • Python從零開始創(chuàng)建區(qū)塊鏈

    Python從零開始創(chuàng)建區(qū)塊鏈

    這篇文章主要為大家詳細介紹了Python從零開始創(chuàng)建區(qū)塊鏈的步驟 ,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python pygame實現(xiàn)2048游戲

    python pygame實現(xiàn)2048游戲

    這篇文章主要為大家詳細介紹了python pygame實現(xiàn)2048游戲,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-11-11

最新評論