mongodb Mongo数据库查询|加入|在两个集合上创建查询

wwwo4jvm  于 2022-12-18  发布在  Go
关注(0)|答案(1)|浏览(130)

bounty将在4天后过期。回答此问题可获得+50的声誉奖励。surendrapanday正在寻找来自声誉良好来源的答案:我应该能够通过对两个文档的不同属性应用条件来获得结果

选择Mongo DB中两个集合的leadId计数
采集1:引线

{
 leadId:"abc123",
 status:"OPENED",
 stage:"start",
 crossSell:
    {
      cc:
         {
            consent:true,
            shown:[{first:true}]
         }
    }
 }

集合2:普达塔

{
 activeLeadId:"abc123",
 status:"OPENED",
 details:
    [
        {
            rating:10
        },
        {
            rating:9
        }
    ]
}

问题:根据以下条件从销售线索收集与pdata收集的联接中查找销售线索ID计数
1.电极导线.电极导线Id =数据.活动电极导线Id,以及
1.销售线索。状态=“已打开”且
1.销售线索.交叉销售.抄送.同意=真且
1.销售线索。交叉销售。抄送。显示[0]。第一个=真和

  1. pdata.详细信息.评级〉= 5
pbwdgjma

pbwdgjma1#

可以尝试聚合查询您,

  • $match您收集潜在客户的条件
  • $lookuppdata集合,传递leadId以与pdata匹配
  • 匹配pdata所需的条件
  • $limit返回单个文档,因为我们不需要响应中的数据
  • 要检查的$match条件为pdata不为空
  • $count以获取记录总数
db.leads.aggregate([
  {
    $match: {
      status: "OPENED",
      "crossSell.cc.consent": true,
      "crossSell.cc.shown.first": true
    }
  },
  {
    "$lookup": {
      "from": "pdata",
      "let": { "leadId": "$leadId" },
      "pipeline": [
        {
          $match: {
            $expr: { $eq: ["$$leadId", "$activeLeadId"] },
            "details.rating": { $gte: 5 }
          }
        },
        { $limit: 1 }
      ],
      "as": "pdata"
    }
  },
  { $match: { pdata: { $ne: [] } } },
  { $count: "count" }
])

Playground

相关问题