0
我有一定的要求,以降低分貝數調用mongo.and執行連接帶來的結果在一個查詢電話蒙戈Db的多個集合查找
我有結構這樣
{
"_id": ObjectId("5818c26ca3329829945a14da"),
"brandId": "SHOP",
"type": "SHOP",
"BrandDetails": {
"channelList": ["Chn1", "Chn2", "Chn3", "Chn4", "Chn5"],
"status": "approved",
"categoryList ": ["RETAIL"]
}
}
"rewards": {
{
"rewardType": "SHOP",
"rewardId": "rwd1",
"brandId": "SHOP",
"RewardDetails": {
"channelNameForReward": [
"chn1"
]
},
"status": "approved",
},
{
"rewardType": "SHOP",
"rewardId": "rwd2",
"brandId": "SHOP",
"RewardDetails": {
"channelNameForReward": [
"chn1"
]
},
"status": "approved",
}
}
查詢:
db.brand.aggregate(
// Pipeline
[
// Stage 1
{
$match: {
"type": "SHOP"
}
},
// Stage 2
{
$match: {
"State": "Approved"
}
},
// Stage 3
{
$match: {
"BrandDetails.channelList": "chn1"
}
},
// Stage 4
{
$match: {
"BrandDetails.categoryList": "RETAIL"
}
},
// Stage 5
{
$lookup: {
"from": "reward",
"localField": "brandId",
"foreignField": "brandId",
"as": "rewards"
}
},
// Stage 6
{
$unwind: "$rewards"
},
// Stage 7
{
$match: {
"rewards.rewardType": "SHOP"
}
},
// Stage 9
{
$match: {
"rewards.processState": "Approved"
}
},
// Stage 6
{
$unwind: "$rewards.channelNameForReward"
},
// Stage 10
{
$match: {
"rewards.channelNameForReward": "Chn1"
}
}
]
);
單品牌我可以有多個獎勵,執行$ lookup和$ unwind操作時我得到的結果,但不是例外格式
個 當我做這樣我得到的反應是這樣品牌標識BrandDetails
...獎勵:reward1 品牌標識BrandDetails ...獎勵:reward2
我正在響應除外這樣
品牌id BrandDetails ...獎勵:red1,rewd2
感謝您的回覆,查找後我不打包執行搜索操作的結果。 –
你如何執行搜索?請在帖子中添加更多詳細信息。 – Veeram