mongodb - 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 开始的同事。但它显示了每个人。有趣的是,如果我将公司的数据类型从数组更改为单个字符串,那么它会按预期工作。数组-> 数组遍历可以吗?还是需要某种“预转换”?
解决方案
尝试将 maxDepth 字段设置为 0,因为它相当于非递归 $graphLookup 搜索阶段。
https://docs.mongodb.com/manual/reference/operator/aggregation/graphLookup/#max-depth
推荐阅读
- javascript - 场景中的神器three.js/editor
- reactjs - 在反应应用程序中访问令牌过期后自动注销
- sql - 标记 SQL Oracle 开发人员最佳实践
- laravel - 无法在 Laravel 中广播通知
- amazon-web-services - 如何使用带有 curl 命令的 kubectl 在 Couchbase 中创建存储桶并将数据插入其中。?
- android-studio - 我可以像这张照片那样运行我的模拟器手册吗?
- java - 在 Glasspane 前面显示 InternalFrame
- node.js - 对 node.js 进行更改后,LocalHost 未加载我在 Windows 的 linux 子系统上运行命令
- javascript - 如何确定点击事件是否是由提交带有“enter”的表单引起的?
- c# - 是否可以从派生类型引用中定义泛型类型?