首页 > 解决方案 > 在 MongoDB 中查找

问题描述

我在管道 mongo 查询中有多个查找。如果任何填充字段未定义,我不想省略这一行。我可以这样做吗?

const pipeline = [
  { $unwind: "$wholesaler" },
  {
    $lookup: {
      from: "serviceproviders",
      localField: "serviceProvider",
      foreignField: "_id",
      as: "serviceProvider"
    }
  },
  { $unwind: "$serviceProvider" },
  {
    $sort: {
      createdAt: 1,
      updatedAt: 1
    }
  }
];

如果未找到服务提供者 ID,则返回我想要的对象的其余部分。

标签: mongodbaggregation-frameworklookup

解决方案


来自 MongoDB文档

保留NullAndEmptyArrays

如果为真,如果路径为空、缺失或为空数组,则 $unwind 输出文档。如果为 false,如果路径为空、缺失或为空数组,$unwind 不会输出文档。

默认值为假。

所以在下面使用:

{
  $unwind: {
    path: "$serviceProvider",
    "preserveNullAndEmptyArrays": true
  }
}

在此处查看示例数据(https://mongoplayground.net/p/aljWODXfwQg


推荐阅读