Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在mongodb的加总框架中包含字段为空的文档?_Mongodb - Fatal编程技术网

如何在mongodb的加总框架中包含字段为空的文档?

如何在mongodb的加总框架中包含字段为空的文档?,mongodb,Mongodb,我有一个问题,我使用聚合框架搜索文档,其中一个文档的字段“place”设置为null。因此,它不会使用我的当前代码从数据库返回。我的代码是: router.get("/search", async (req, res) => { const items = await Item.aggregate([ { $lookup: { from: "places", localField: "

我有一个问题,我使用聚合框架搜索文档,其中一个文档的字段“place”设置为null。因此,它不会使用我的当前代码从数据库返回。我的代码是:

router.get("/search", async (req, res) => {
  const items = await Item.aggregate([
    {
      $lookup: {
        from: "places",
        localField: "place",
        foreignField: "_id",
        as: "placeData",
      },
    },
    {
      $unwind: "$placeData",
    },
    {
      $match: {
        $or: [
          { title: new RegExp(req.query.searchQuery, "i") },
          { sku: new RegExp(req.query.searchQuery, "i") },
          { "place.title": new RegExp(req.query.searchQuery, "i") },
        ],
      },
    },
    {
      $project: {
        title: 1,
        sku: 1,
        place: {
          $ifNull: ["$placeData", "Digital"],
        },
      },
    },
  ]);

  res.send(items);
});

我想出来了。我稍微调整了“放松”阶段,如下所示:

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

我认为这是故意的。是否确实要在数据库中存储空值?我想您应该在使用此服务的服务中执行空检查?我有items collection,其中一些项目可以是数字的,也可以不是数字的。如果是数字,则位置为空。您可以使用
$lookup
的替代语法指定。