簡體   English   中英

Mongoose - 從子文檔中刪除屬性

[英]Mongoose - Delete property from SubDocument

我有以下貓鼬模式和代碼:

架構:

{
    ...
    inv: {
        type: Object,
        default: {}
    },
    ...
}

代碼(版本 1),其中targetData是 Mongoose DocumentitemString ,而amountNumber

targetData.inv[item] = targetData.inv[item] - amount;
if (!targetData.inv[item]) delete targetData.inv[item];
await targetData.save();

代碼(版本 2):

targetData.inv[item] = targetData.inv[item] - amount;
if (!targetData.inv[item]) targetData.inv[item] = undefined;
await targetData.save();

問題是這些嘗試都沒有從文檔中刪除targetData.inv[item] 我的目標是從子文檔中刪除一個項目,比如"thing" 例如:

前:

{
    ...
    inv: {
        thing: 5
    },
    ...
}

后:

{
    ...
    inv: {},
    ...
}

注意:當amount是小於一個數5 (在上述的例子),則代碼工作正常。 如果我刪除所有5 ,那就是它不更新時,它將保持為5

注 2:我使用的是貓鼬 5.3.15

我怎樣才能做到這一點?

編輯:看起來只有在inv只有 1 個屬性時才會發生這種情況。 inv: { thing: 5, anotherThing: 6 }這樣的東西可以與delete關鍵字完美配合。

發現出了什么問題。 我需要做的就是使用targetData.markModified("inv")手動告訴 Mongoose inv已被修改。 文檔 這是由於 SchemaType 被混合( Object

我知道你解決了這個問題,但我有一個想法。 通常在這種情況下,我想獲取文檔並遍歷對象並找到項目並將其刪除並再次保存文檔。 這是我正在做的一種天真的方式。

暫無
暫無

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

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