按 3 个表分组并在空函数中计数,与空表 mongoDB 相同



' 这是我的文档:我想按storeId和3个数组diag.webForWeb,diag.webForStore和diag.storeForStore分组,并计算一个甚至空数组: 类似的东西。

storeId; businessRulesWebForStore ; (vide); 100
$storeId; businessRulesWebForStore ; Cas 1; 1344
$storeId; businessRulesWebForStore ; Cas 2; 721
...
$storeId; businessRulesStoreForStore ; (vide); 100
$storeId; businessRulesStoreForStore ; Cas 1; 1344
...
$storeId; businessRulesWebForWeb; (vide); 100
$storeId; businessRulesWebForWeb; Cas 1; 1344

所以这就是我想要实现的目标,如果有人 CA 请帮助我 我做了这样的查询,但它不计算空值 `

{ 
"_id" : "0176#82054861", 
"storeId" : "176", 
"diag" : {
"webForWeb" : [
{
"_id" : "39", 
"label" : "Cette référence LAD est livrable en point relais sur commande - en plus des quantités éventuellement disponible sur le PE - associé à un ENT (pas de controle de stock avant l'ATP dans ce cas)."
}, 
{
"_id" : "12", 
"label" : "Cette référence LAD n'est pas en stock sur le site d'éxpédition - pas de livraison avec délais court éligible."
}, 
{
"_id" : "37", 
"label" : "Cette référence LAD est livrable à domicile sur commande - en plus des quantités éventuellement disponible sur le PE - associé à un ENT (pas de controle de stock avant l'ATP dans ce cas)."
}
], 
"webForStore" : [
{
"_id" : "7", 
"label" : "Le stock magasin est <= 1 la référence n'est pas proposé en retrait 2 H"
}
], 
"storeForStore" : [
]
}
}
{ 
"_id" : "0176#66228414", 
"storeId" : "176", 
"diag" : {
"webForWeb" : [
{
"_id" : "12", 
"label" : "Cette référence LAD n'est pas en stock sur le site d'éxpédition - pas de livraison avec délais court éligible."
}, 
{
"_id" : "37", 
"label" : "Cette référence LAD est livrable à domicile sur commande - en plus des quantités éventuellement disponible sur le PE - associé à un ENT (pas de controle de stock avant l'ATP dans ce cas)."
}
], 
"webForStore" : [
{
"_id" : "7", 
"label" : "Le stock magasin est <= 1 la référence n'est pas proposé en retrait 2 H"
}
], 
"storeForStore" : [
]
}
}
{ 
"_id" : "0176#67494266", 
"storeId" : "176", 
"diag" : {
"webForWeb" : [
{
"_id" : "3", 
"label" : "Cette référence n'est pas commercialisée sur le magasin 380. ‘Mode de vente’ à non dans shopping manager. Contact : Chargé de Commercialisation du rayon auquel appartient la référence"
}
], 
"webForStore" : [
{
"_id" : "6", 
"label" : "L'article n'est pas vendu en ligne par le magasin exclusion PickUp dans MyStore"
}
], 
"storeForStore" : [
{
"_id" : "6", 
"label" : "Plus de stock sur un produit non suivi rupture définitive"
}
]
}
}
{ 
"_id" : "0192#80036271", 
"storeId" : "192", 
"diag" : {
"webForWeb" : [
{
"_id" : "18", 
"label" : "Cette référence n'est pas éligible au sur commande - hors quantité disponible sur le PE. Option shopping manager 'Se limiter au stock dispo' cochée. Contact : chargé de Commercialisation'"
}, 
{
"_id" : "12", 
"label" : "Cette référence LAD n'est pas en stock sur le site d'éxpédition - pas de livraison avec délais court éligible."
}
], 
"webForStore" : [
{
"_id" : "18", 
"label" : "Les références en top 1 ne sont pas éligible au sur commande."
}, 
{
"_id" : "10", 
"label" : "Le stock magasin est >1 la référence est suivi Auto elle est éligible au Retrait 2H"
}
], 
"storeForStore" : [
{
"_id" : "5", 
"label" : "Disponible en magasin"
}
]
}
}
{ 
"_id" : "0205#80036271", 
"storeId" : "205", 
"diag" : {
"webForWeb" : [
{
"_id" : "18", 
"label" : "Cette référence n'est pas éligible au sur commande - hors quantité disponible sur le PE. Option shopping manager 'Se limiter au stock dispo' cochée. Contact : chargé de Commercialisation'"
}, 
{
"_id" : "12", 
"label" : "Cette référence LAD n'est pas en stock sur le site d'éxpédition - pas de livraison avec délais court éligible."
}
], 
"webForStore" : [
{
"_id" : "7", 
"label" : "Le stock magasin est <= 1 la référence n'est pas proposé en retrait 2 H"
}, 
{
"_id" : "30", 
"label" : "La référence associée à un top Réppro à 2 n'est pas proposé à la vente car le retrait magasin sur commande est désactivé au niveau du magasin"
}
], 
"storeForStore" : [
]
}
}
{ 
"_id" : "0205#73683743", 
"storeId" : "205", 
"diag" : {
"webForWeb" : [
{
"_id" : "8", 
"label" : "Cette référence LAD est en stock sur le site d'expédition - livraison à domicile éligible avec délais courts"
}, 
{
"_id" : "18", 
"label" : "Cette référence n'est pas éligible au sur commande - hors quantité disponible sur le PE. Option shopping manager 'Se limiter au stock dispo' cochée. Contact : chargé de Commercialisation'"
}
], 
"webForStore" : [
{
"_id" : "7", 
"label" : "Le stock magasin est <= 1 la référence n'est pas proposé en retrait 2 H"
}, 
{
"_id" : "17", 
"label" : "Les références en top 0 ne sont pas éligible au sur commande."
}
], 
"storeForStore" : [
{
"_id" : "6", 
"label" : "Plus de stock sur un produit non suivi rupture définitive"
}
]
}
}

' 这是我的文档:我想按storeId分组,3个数组diag.webForWeb,diag.webForStore和diag.storeForStore,计数甚至计数为空数组:

所以这就是我想要实现的目标,如果有人 CA 请帮助我 我做了这样的查询,但它不计算空值 `

db.getCollection("deliveryInfosDto").aggregate([
{
$addFields:{
"diag.webForWeb.name" : "webForWeb",
"diag.webForStore.name" : "webForStore",
"diag.storeForStore.name" : "storeForStore"
}  
},
{
$project: {
_id: "$storeId",
businessRules: { $concatArrays: ["$diag.webForWeb", "$diag.webForStore", "$diag.storeForStore"] }
}
},
{
$unwind: { path: "$businessRules", preserveNullAndEmptyArrays: true}
},
{
$group: {
_id:{StoreId:"$_id",bBusinessRule : "$businessRules.name", Cas: "$businessRules._id"},
count: {$sum: 1}   
}
}
])

如果我做对了。这将提供您需要的东西。

db.getCollection('deliveryInfosDto').aggregate([
{ "$project": {
"storeId":"$storeId", 
"rules" :[ { "rule":"WebForWeb", "count":{ $size: "$diag.webForWeb" }}
, { "rule":"WebForStore", "count":{ $size: "$diag.webForStore" }}
, { "rule":"StoreForStore", "count":{ $size: "$diag.storeForStore" }},]} 
},
{ "$unwind": "$rules"},
{ "$group" : {
"_id": {"businessRule": "$rules.rule", "storeId":"$storeId" },
"Cas": { $sum: "$rules.count"  }}} 
])

结果:

{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "storeForStore", 
"Cas" : "6"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForWeb", 
"Cas" : "8"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForWeb", 
"Cas" : "12"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForWeb", 
"Cas" : "18"
}, 
"count" : 2.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForStore", 
"Cas" : "30"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForStore", 
"Cas" : "7"
}, 
"count" : 2.0
}
{ 
"_id" : {
"StoreId" : "192", 
"bBusinessRule" : "storeForStore", 
"Cas" : "5"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "192", 
"bBusinessRule" : "webForStore", 
"Cas" : "10"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForStore", 
"Cas" : "7"
}, 
"count" : 2.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForWeb", 
"Cas" : "39"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForWeb", 
"Cas" : "37"
}, 
"count" : 2.0
}
{ 
"_id" : {
"StoreId" : "192", 
"bBusinessRule" : "webForWeb", 
"Cas" : "12"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForWeb", 
"Cas" : "12"
}, 
"count" : 2.0
}
{ 
"_id" : {
"StoreId" : "205", 
"bBusinessRule" : "webForStore", 
"Cas" : "17"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForWeb", 
"Cas" : "3"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "webForStore", 
"Cas" : "6"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "176", 
"bBusinessRule" : "storeForStore", 
"Cas" : "6"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "192", 
"bBusinessRule" : "webForStore", 
"Cas" : "18"
}, 
"count" : 1.0
}
{ 
"_id" : {
"StoreId" : "192", 
"bBusinessRule" : "webForWeb", 
"Cas" : "18"
}, 
"count" : 1.0
}

相关内容

  • 没有找到相关文章

最新更新