簡體   English   中英

無法更新 mongoDb 本機 findOneAndUpdate 查詢上的數據值

[英]Unable to update data values on mongoDb native findOneAndUpdate query

exports.update_activity_status = (req, res) => {
  const {
    campaign_id,
    leadId,
    leadActivity,
    status,
  } = req.body;

  const client = mongoClient.connect(`${process.env.MONGO_URL}`, {
    useUnifiedTopology: true,
  });
  client.then((cli) => {
    cli
      .db(`${process.env.DATABASE_NAME}`)
      .collection(`${process.env.ACTIVITY_COLLECTION}`)
      .findOneAndUpdate(
        {
          "data.campaign_id": mongoose.Types.ObjectId(campaign_id),
          "data.leads.$._id": mongoose.Types.ObjectId(leadId),
          // "data.leads._id" : leadId
        },
        {
          $set: {
            "data.leads.$.leadActivity": leadActivity,
            "data.leads.$.status": status,
          },
        },
        {
          returnNewDocument: true,
        }
      )
      .then((result) => {
        console.log("UPDATED RESULT", result);
        res.json(result)
      })
      .catch((err) => console.log("new err", err));
  });
};

在我的查詢中,我需要更新其leadId符合以下條件的用戶的狀態和leadActivity:

  1. 與文檔匹配的campaign_id(這工作正常)。
  2. 在該特定文檔中匹配的leadsId(不起作用)。

首先,我嘗試僅使用db.find({"data.campaign_id": mongoose.Types.ObjectId(campaign_id)})並返回僅與上面指定的第一個條件匹配的數據。 一旦我與第二個條件和findOneAndUpdate({....})一起嘗試,在包含輔助過濾條件后訪問嵌套數據將返回null

這是我的文檔 object 的樣子:

在此處輸入圖像描述 任何解決此問題的幫助表示贊賞。 提前致謝。

匹配leads -array中_id的第二個條件不正確,需要修改為:

  "data.leads._id": mongoose.Types.ObjectId(leadId)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM