У меня есть требование, чтобы уменьшить количество дб вызовов mongo.and выполнения присоединяется принести результат в одном вызове запросаМонго Db Multiple коллекция LookUp
У меня есть структура вроде этого
{
"_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 operation. Я получаю результат, но не в свободном формате
, когда я делаю, как это я получаю ответ, как этот
бренд Ид BrandDetails ... награды: reward1 бренда идентификаторов BrandDetails ... награды: reward2
я кроме ответа, как этот
бренд id BrandDetails ... награды: red1, rewd2
Спасибо за ответ, после поиска я не кип, чтобы выполнить операцию поиска по результату. –
как вы выполняете поиск? добавьте более подробную информацию к сообщению. – Veeram