Как мне включить документ, в котором поле равно нулю, в платформу расширения в mongodb?

#mongodb

#mongodb

Вопрос:

У меня проблема, когда я ищу документы с помощью платформы агрегации, и в одном документе для поля «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);
});
  

Комментарии:

1. Я думаю, что это сделано специально. Вы действительно хотите хранить значения null в БД? Я думаю, вы должны выполнить проверку на нуль в службе, которая использует это?

2. У меня есть коллекция элементов, где некоторые элементы могут быть цифровыми или нет. если оно цифровое, место равно нулю

3. Вы можете указать несколько условий объединения с $lookup альтернативным синтаксисом.

Ответ №1:

Я понял это. Я немного изменил этап «размотки» следующим образом:

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