【问题标题】:How to find Intersection of Two Collection in monogdb?如何在mongodb中找到两个集合的交集?
【发布时间】:2019-03-11 05:29:22
【问题描述】:

比方说,我有 2 个收藏

第一个:-

db.product_main

{
  _id:123121,
  source_id:"B4456dde1",
  title:"test Sample",
  price: 250
  quantity: 40
}

由大约 10000 个对象(数组)组成,唯一字段是 source_id。

第二个:-

db.product_id

{
  "_id":58745633,
  "product_id":"B4456dde1"
}

由 ~500 组成,只有字段“product_id”等于 db.product_main 的“source_id”

现在,我想将两个集合相交,以便只找到那些在 db.product_id 中不存在的集合。

db.product_main.aggregate({任何查询})

【问题讨论】:

标签: php mongodb aggregation-framework phalcon


【解决方案1】:

只需使用查找阶段查找与“product_main”集合关联的产品,然后匹配空数组(即未找到 product_id 的记录)

db.product_main.aggregate([
  {
    $lookup: {
      from: "product_id",
      localField: "source_id",
      foreignField: "product_id",
      as: "products_available"
    }
  },
  {
    $match: {
      products_available: {
        $size: 0
      }
    }
  }
])

【讨论】:

    【解决方案2】:

    使用聚合管道进行WRITE 操作您也可以使用$out 命令直接卸载统计更新,并将缓存结果存储在product_stats 集合中(例如)。

    稍后在 web/ui/api READ 操作中只使用这个缓存的集合。当然,您可以为缓存和非缓存结果创建数据库查询方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-08-19
      • 1970-01-01
      • 2017-11-10
      • 2011-05-23
      • 2014-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多