我們在 Mongo 集合中有以下結構
{
"_id" : ObjectId("5f98aeadbaf1ea001affe4c0"),
"name" : "Temp",
"campaigntype" : 3,
"startdate" : ISODate("2021-01-01T00:00:00.000Z"),
"enddate" : ISODate("2021-01-01T00:00:00.000Z"),
"affiliatetag" : "",
"promotedtitles" : [
{
"primaryisbn" : "9781453238431",
"promoprice" : "1.99",
"countries" : [
"US",
"CA",
"AU",
"GB"
],
"retailers" : [
"ALL"
],
"dlp" : "17.99",
"notes1" : "History",
"notes2" : "",
"sequence" : 1
},
{
"primaryisbn" : "9781504063562",
"promoprice" : "1.99",
"countries" : [
"US",
"CA"
],
"retailers" : [
"ALL"
],
"dlp" : "11.99",
"notes1" : "Thrillers",
"notes2" : "",
"sequence" : 2
},
{
"primaryisbn" : "9781497673984",
"promoprice" : "0.99",
"countries" : [
"US",
"CA"
],
"retailers" : [
"ALL"
],
"dlp" : "6.99",
"notes1" : "Romantic Suspense",
"notes2" : "",
"sequence" : 3
},
{
"primaryisbn" : "9780547526959",
"promoprice" : "1.99",
"countries" : [
"CA"
],
"retailers" : [
"All"
],
"dlp" : "17.99",
"notes1" : "History",
"notes2" : "",
"sequence" : 4
},
{
"primaryisbn" : "9781453274248",
"promoprice" : "1.99",
"countries" : [
"US"
],
"retailers" : [
"All"
],
"dlp" : "9.99",
"notes1" : "Historical Fiction",
"notes2" : "",
"sequence" : 5
}
],
"active" : true,
"createdby" : ObjectId("5d2e2755d3851f0012108a05")
}
我們需要通過傳遞單個國家(如 ['US'])或多個國家(如 ['US', 'CA'])來撰寫查詢。查詢應該只從提升的標題中回傳匹配的子檔案。
例如,如果我們通過國家的“美”,我們應該得到的主要ISBN 9781453238431,9781504063562,9781497673984和9781453274248.如果我們經過國家為[“GB”,“CA”],我們需要得到9781453238431,9781504063562,9781497673984和9780547526959.如果我們通過['GB'],我們應該只會得到9781453238431子檔案
我們正在嘗試使用 Promotiontitles.countries : {$in : ['US', 'CA']} 但這不起作用。
提前致謝
uj5u.com熱心網友回復:
你可以$unwind并且$match喜歡這樣:
$unwind是解構陣列并將每個物件作為不同的值而不是全部放在一個陣列中。- 然后您可以使用
$match和過濾每個物件$in。
db.collection.aggregate([
{
"$unwind": "$promotedtitles"
},
{
"$match": {
"promotedtitles.countries": {
"$in": [
"US"
]
}
}
},
{
"$project": {
"_id": 0,
"result": "$promotedtitles.primaryisbn"
}
}
])
例如這里使用US,并在這里用GB, CA。
此外,如果您想獲得一個陣列中的所有 ISBN,您可以添加一個$group像這樣的例子
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/326156.html
標籤:mongodb
上一篇:以案例物件為鍵的HMap
下一篇:PyMongo不回傳聚合結果
