【问题标题】:MongoDB: N-N relationship table Query using Aggregate?MongoDB:使用聚合的 N-N 关系表查询?
【发布时间】:2020-12-05 13:49:53
【问题描述】:

我有一个用于 N-N 关系映射目的的关系表(仅包含 2 个字段):

示例: ProductRelation 集合(在 MongoDB 中)包含以下 3 个文档:

{ p1: '0001', p2: '0002' },
{ p1: '0003', p2: '0001' },
{ p1: '0004', p2: '0005' }

问题: 如果我使用“0001”产品搜索,我希望找到它的所有相关产品,预期回报:

{ '0002', '0003' }

有没有办法做到这一点?我尝试使用“聚合”但不成功。先谢谢了。

【问题讨论】:

    标签: mongodb aggregate relationship


    【解决方案1】:

    我想我找到了答案。这就是我所做的,如下所示:

    ProductRelation.aggregate (
      [
        { $match: { $or: [ { p1: '0001' }, { product2: '0001' }] } },
        { $project: { p1: { $cond: { 
                               if: { $eq: [ '0001', "$p1" ]  },
                               then: "$$REMOVE",
                               else: "$p1"
                           } },
                      p2: { $cond: { 
                               if: { $eq: [ '0001', "$p2" ]  },
                               then: "$$REMOVE",
                               else: "$p2"
                           } },
                    }
        },
        { $replaceRoot: { newRoot: { myList: { $mergeObjects : [ "$p1",  "$p2" ] } } } },
        { $replaceWith: { $mergeObjects: [ "$myList"] } }
      ]
    

    注意:只需要将'0001'替换为传入参数即可。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2018-08-03
      • 1970-01-01
      • 2021-12-15
      相关资源
      最近更新 更多