Python Flask (MongoDB 篩選、排序資料)

出處: Youtube 彭彭的課程  Python Flask 網站後端開發 – MongoDB 篩選、排序資料

實作筆記

篩選集合中的文件資料

想搜尋”number”:”1″的資料

#篩選集合中的文件資料
doc = collection.find_one({
    "number":"1"
})
print("取得的資料",doc)

如果想搜尋特定欄位也可以用

print(“取得的資料”,doc[“name”])去過濾。。。

如果”number”:”1″ 這一筆資料不只一筆的話也只會印出一筆,只會列出id較舊的資料,先被創先贏的概念

同時成立的條件$and

接下來想篩選number”:”3″,並且”password”是6789

#複合篩選條件
doc = collection.find_one({
    "$and":[
        {"number":"3"},
        {"password":6789}
    ]
    
})
print("取得的資料",doc)

滿足其中一條件$or

接下來想篩選number”:”1″,或是”password”是6789

#複合篩選條件
doc = collection.find({
    "$or":[
        {"number":"1"},
        {"password":6789}
    ]
    
})
for n in doc:
    print("取得的資料",n)

#篩選結果排序

  • 由於篩選的結果會有復數筆資料, 若用一筆條件去抓的話collection.find_one,那就只能抓到一筆資料,所以用collection.find 復數的條件去抓
  • 這邊的 變數doc是一個物件,若沒有用for迴圈的話,會印出類似這樣的結果<pymongo.cursor.Cursor object at 0x000001BFEDD408B0>,所以必須用for迴圈把每筆資料在印出來

結果

排序方式 sort

排序分別可以由小至大(ascending; 預設),或由大至小(descending)。

以下想要“number”由大至小進行排列

#篩選結果排序
doc = collection.find({
    "$or":[
        {"number":"3"},
        {"password":123}
    ]
}, sort=[
    ("number",pymongo.DESCENDING)
]
)
for n in doc:
    print("取得的資料",n)

“number”由大至小進行排列(ascending; 預設)

sort=[
    ("number",pymongo.ASCENDING)