mongodb 节点快速检查数组中是否存在mongo对象ID,如果不存在,则更新

vqlkdk9b  于 2022-11-03  发布在  Go
关注(0)|答案(1)|浏览(166)

我在mongo中有一个数组列表,我需要做的是将Id推入数组列表中,并检查如果Id存在,则不会推入
现在我这样推

const eventUserGoing = async (req, res) => {
  try {
    const updateuserGoinginEvent = await Events.findByIdAndUpdate(
      req.body.eventid,
      {
        $push: {
          userGoing: req.user.user_id,
        },
      },
      {
        new: true,
      }
    );
    res
      .status(200)
      .json({
        success: true,
        message: 'Event saved successfully',
        data: updateuserGoinginEvent,
      });
  } catch (err) {}
};

我认为如果它的可能性,通过聚合,但没有得到什么是最好的这样做。

njthzxwz

njthzxwz1#

如果带有_id的事件尚未包含该用户,请尝试使用findOneAndUpdate
如果是这种情况,则$push新用户:

const eventUserGoing = async (req, res) => {
  try {
    const updateuserGoinginEvent = await Events.findOneAndUpdate(
      { _id: req.body.eventid, userGoing: { $ne: req.user.user_id } },
      {
        $push: {
          userGoing: req.user.user_id,
        },
      },
      {
        new: true,
      }
    );

    res.status(200).json({
      success: true,
      message: 'Event saved successfully',
      data: updateuserGoinginEvent,
    });
  } catch (err) {}
};

相关问题