基本上,我有一個帶有嵌套物件陣列的物件陣列。我想獲取用戶 ID 為“user1”的用戶的 flashcardReversed 陣列物件,其中 front 等于“2front”。
這是我的資料:
[
{
"_id": "608642db80a36336946620aa",
"userID": "user1",
"title": "title2",
"flashcardReversed": [
{
"_id": "608d5b290e635ece6828141X",
"front": "2front",
"back": "2back",
"value": "1",
},
{
"_id": "608t5b290e635ece6828141Y",
"front": "2frontReversed",
"back": "2backReversed"
"value": "2",
},
{
"_id": "608a5b31a3f9806de253726X",
"front": "2front2",
"back": "2back2"
"value": "3",
},
{
"_id": "608a5b31a3f9806de253726Y",
"front": "2frontReversed2",
"back": "2backReversed2"
"value": "4",
}
]
},
{
"_id": "608642db80a36336946620aa",
"userID": "user1",
"title": "title3",
"flashcardReversed": [
{
"_id": "608d5b290e635ece6828142X",
"front": "2front",
"back": "2back",
"value": "12",
},
{
"_id": "608t5b290e635ece6828143Y",
"front": "2frontReversed",
"back": "2backReversed"
"value": "21",
},
{
"_id": "608a5b31a3f9806de253727X",
"front": "2front2",
"back": "2back2"
"value": "34",
},
{
"_id": "608a5b31a3f9806de253729Y",
"front": "2frontReversed2",
"back": "2backReversed2"
"value": "42",
}
]
},
{
"_id": "608642db80a36336946620aa",
"userID": "user2",
"title": "title4",
"flashcardReversed": [
{
"_id": "608d5b290e635ece6828131X",
"front": "2front",
"back": "2back",
"value": "41",
},
{
"_id": "608t5b290e635ece6828161Y",
"front": "2frontReversed",
"back": "2backReversed"
"value": "54",
},
{
"_id": "608a5b31a3f9806de253526X",
"front": "2front2",
"back": "2back2"
"value": "63",
},
{
"_id": "608a5b31a3f9806de253326Y",
"front": "2frontReversed2",
"back": "2backReversed2"
"value": "29",
}
]
},
]
有 2 個物件的用戶 ID 為“user1”,因此輸出應如下所示:
{
"userID": "user1"
"flashcardReversed": [
{
"_id": "608d5b290e635ece6828141X",
"front": "2front",
"back": "2back",
"value": "1",
},
{
"_id": "608d5b290e635ece6828142X",
"front": "2front",
"back": "2back",
"value": "12",
},
]
}
是否可以使用 pymongo 為此撰寫代碼?
uj5u.com熱心網友回復:
$match$unwind$match$group
db.collection.aggregate([
{
"$match": {
"userID": "user1",
"flashcardReversed.front": "2front"
}
},
{
"$unwind": "$flashcardReversed"
},
{
"$match": {
"flashcardReversed.front": "2front"
}
},
{
"$group": {
"_id": "$userID",
"flashcardReversed": {
"$push": "$$ROOT.flashcardReversed"
}
}
}
])
mongoplayground
pymongo 與 fastAPI
@app.get("/card")
async def root():
db = get_database()
pipeline = [
{ "$match": { "userID": "user1", "flashcardReversed.front": "2front" } },
{ "$unwind": "$flashcardReversed" },
{ "$match": { "flashcardReversed.front": "2front" } },
{ "$group": { "_id": "$userID", "flashcardReversed": { "$push": "$$ROOT.flashcardReversed" } } }
]
c = list(db['card'].aggregate(pipeline))
return {"message": c}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/376322.html
標籤:Python MongoDB mongodb-查询 皮蒙戈
上一篇:使用python在文本檔案的每一行的末尾添加一個特定的字串(在這種情況下為“\\\hline”以準備乳膠表)
下一篇:seaborn堆積條形圖并顯示值
