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