![](/img/trans.png)
[英]MongoDB - Mongoose query findOneAndUpdate() doesn't update/duplicates the DB
[英]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:
首先,我嘗試僅使用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.