iT邦幫忙

2023 iThome 鐵人賽

DAY 14
0
Software Development

玩轉 Python 與 MongoDB系列 第 14

玩轉 Python 與 MongoDB_Day14_聚合表達式

  • 分享至 

  • xImage
  •  

今天要介紹的是 expr,他可以讓我們在不使用 aggregate 的情況下進行一些簡易的表達式操作,節省我們編寫程式碼的時間

語法:{ $expr: { } }

下方範例中可以看到,我們透過表達式印出 A3 事故數量大於 A2 事故數量的所有資料,並且將路口名稱以及統計資訊印出來,方便進行範例展示

import os
from pathlib import Path
from dotenv import load_dotenv
from pymongo.database import Database
from pymongo.collection import Collection
from pymongo.mongo_client import MongoClient
from pprint import pprint

# 讀取 .env 取得連線資訊
BASE_DIR = Path(__file__).parent.parent
load_dotenv(str(BASE_DIR / ".env"))

# 建立 client 並與 db、collection 進行連線
client = MongoClient(host=os.getenv("MONGODB_ATLAS_URL"))
database = Database(client=client, name="HighRiskIntersection")
collection = Collection(database=database, name="Intersection")

print("---- demo expr ----")
result = collection.find(
    {"$expr": {"$gte": ["$statistics.A3_amount", "$statistics.A2_amount"]}},
    {"intersection": 1, "statistics": 1},
    limit=5
)
pprint(list(result))

client.close()

下圖中可以看到我們抓出來的資料全部都符合我們表達式中的條件

expr 截圖


上一篇
玩轉 Python 與 MongoDB_Day13_正規表達式
下一篇
玩轉 Python 與 MongoDB_Day15_一對一、一對多以及 LookUp
系列文
玩轉 Python 與 MongoDB30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言