首页 > 解决方案 > MongoDB | 使用数组进行图形查找

问题描述

MongoDB - 尝试使用数组作为链接字段进行图形查找。看到难以理解的奇怪结果。

我的数据集:

db.events.insertMany([
  { _id: 1, name: 'A', companies: ["X", "Y", "Z"] },
  { _id: 2, name: 'B', companies: ["X", "Y"] },
  { _id: 3, name: 'C', companies: ["X", "W"] },
  { _id: 4, name: 'D', companies: ["P","Q"] },
  { _id: 5, name: 'E', companies: ["P"] }
]);

我的图表查询:

db.events.aggregate([
  { $match: { _id: 5 } },
  {
    $graphLookup: {
      from: 'events',
      startWith: '$companies', 
      connectFromField: 'companies',
      connectToField: 'companies', 
      maxDepth: 1, 
      as: 'colleagues'
    }
  }
]);

预期结果:我原以为只有 E & D 会出现在结果中,因为他们是唯一从 E 开始的同事。但它显示了每个人。有趣的是,如果我将公司的数据类型从数组更改为单个字符串,那么它会按预期工作。数组-> 数组遍历可以吗?还是需要某种“预转换”?

标签: mongodbmongodb-queryaggregation-framework

解决方案


尝试将 maxDepth 字段设置为 0,因为它相当于非递归 $graphLookup 搜索阶段。

https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/#max-depth


推荐阅读