我是 mongodb 的新手,我發現的只是基本情況的例子。不幸的是,這兩個手冊都沒有幫助。
我需要從嵌入檔案中獲得過濾資料的回應,例如:
{
"_id": {
"$oid": "615c74d32f86c312a50da3d2"
},
"basic_column": "post number 1",
"basic_column": "lorem ipsum",
"embededData": [{
"date": {
"$date": "2021-11-05T00:00:00.000Z"
},
"embeded_column_1": 23
}, {
"date": {
"$date": "2022-11-06T00:00:00.000Z"
},
"embeded_column_1": 24
}]
},{
"_id": {
"$oid": "618c74d32f86c312a50da3d2"
},
"basic_column": "post number 2",
"basic_column": "lorem ipsum",
"embededData": [{
"date": {
"$date": "2021-11-05T00:00:00.000Z"
},
"embeded_column_1": 25
}, {
"date": {
"$date": "2021-11-06T00:00:00.000Z"
},
"embeded_column_1": 26
}]
}
我需要從這個結果中得到“basic_column”=“lorem ipsum”的條件,并且在“embededData”檔案中只有“date”> 2020 和“date”< 2022
所以結果應該是
{
"_id": {
"$oid": "615c74d32f86c312a50da3d2"
},
"basic_column": "post number 1",
"basic_column": "lorem ipsum",
"embededData": [{
"date": {
"$date": "2021-11-05T00:00:00.000Z"
},
"embeded_column_1": 23,
}]
},{
"_id": {
"$oid": "618c74d32f86c312a50da3d2"
},
"basic_column": "post number 2",
"basic_column": "lorem ipsum",
"embededData": [{
"date": {
"$date": "2021-11-05T00:00:00.000Z"
},
"embeded_column_1": 25,
}, {
"date": {
"$date": "2021-11-06T00:00:00.000Z"
},
"embeded_column_1": 26
}]
}
謝謝你的幫助
uj5u.com熱心網友回復:
有一個很好的 npm包用于對 JSON 進行查詢。而且,basic_column在字典中出現兩次,這是無效的。每個鍵在字典中應該是唯一的。
uj5u.com熱心網友回復:
詢問
- 匹配以僅保留具有
"basic_column" = "lorem ipsum" - 過濾并僅保留日期年份 >2020 < 2022 的成員
($year 運算子用于執行此操作) - 如果您想過濾掉具有空 embeddingData 的檔案,請添加此項
{"$match": {"$expr": {"$ne": ["$embededData", []]}}}
測驗代碼在這里
aggregate(
[{"$match": {"basic_column": {"$eq": "lorem ipsum"}}},
{"$set":
{"embededData":
{"$filter":
{"input": "$embededData",
"cond":
{"$let":
{"vars": {"date_year": {"$year": "$$this.date"}},
"in":
{"$and":
[{"$gt": ["$$date_year", 2020]},
{"$lt": ["$$date_year", 2022]}]}}}}}}}])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/314283.html
標籤:MongoDB
