【问题标题】:Mongoose element in array of objects对象数组中的猫鼬元素
【发布时间】:2021-11-17 04:20:51
【问题描述】:

如果对象数组中的元素已经在数组中,我想更新它。

现在我正在做的是:

exports.pushDocumentsList = (req, res) => {
  const documents = [];

  documents.push({
    _id: req.body.document._id,
    fileid: req.body.document.fileid,
    filename: req.body.document.filename,
    url: req.body.document.url ? req.body.document.url : '',
    status: req.body.document.status ? req.body.document.status : '',
    expiredate: req.body.document.expiredate
      ? req.body.document.expiredate
      : '',
  });

  User.findOneAndUpdate(
    {
      _id: req.profile._id,
    },
    { $push: { documents } },
    { new: true, useFindAndModify: false },
    (err, docu) => {
      console.log(docu);
      if (err) {
        return res.status(400).json({
          error: "Non è stato possibile aggiornare i documenti dell'utente",
        });
      }
      return res.status(200).json({
        status: 'success',
        message: 'Documento caricato con successo',
        doc: req.body.document,
      });
    }
  );
};

所以这只会将元素附加到数组中,我想知道如果元素已经在数组中,我该如何更新它。

【问题讨论】:

    标签: javascript node.js mongodb mongoose mern


    【解决方案1】:

    你可以做到。符号和 $eleMatch 带点的示例:

    const user = await User.findOneAndUpdate(
      { _id: req.profile._id, "documents._id": "someId" },
      {
        $set: {
          "documents.$.filename": "file changed"
          "documents.$.status": "status will change",
        },
      }, //update
      { new: true } //options
    );
    

    【讨论】:

      猜你喜欢
      • 2023-04-01
      • 2015-12-28
      • 2021-05-06
      • 2021-03-06
      • 2021-09-23
      • 2016-05-14
      • 2020-10-22
      • 1970-01-01
      • 2018-05-28
      相关资源
      最近更新 更多