簡體   English   中英

如何在基於父屬性的數組中查找和更新子文檔

[英]How to find and update subdocument within array based on parent property

我需要根據其自己的user_id屬性和其父項的my_id屬性找到一個位於數組內的子文檔

這些是我為模型(對話)准備的模式:

var listSchema = mongoose.Schema({
    user_id: Number,
    property: Boolean,
});

var conversationSchema = mongoose.Schema({
    my_id: Number,
    list: [listSchema]
});

在瀏覽過貓鼬的文檔和此處類似的一些問題之后,我嘗試了以下方法(在我看來,它應該可以工作):

Conversation.findOneAndUpdate(
    { "my_id": 8, "list.user_id": 16 },
    { 
        "$set": {
            "list.$.property": false
        }
    },
    function(err, doc) {
        console.error("Error:", err);
        console.log("Doc:", doc);
    }
);

但這給了我這個輸出,文檔根本沒有更新:

Error: null
Doc: null

我在這里想念什么? 任何幫助表示贊賞,在此先感謝!

我終於知道發生了什么事:

我將user_id屬性作為字符串保存到MongoDB,所以我嘗試將查詢的這一部分更改為:

"list.user_id": "16"

代替:

"list.user_id": 16

仍然沒有用,但是后來我發現我在listSchema中將user_id定義為Number,因此將其更改為String:

var listSchema = mongoose.Schema({
    user_id: String,
    property: Boolean,
});

現在它可以工作了,在查詢中使用“ 16”還是“ 16”都沒關系,我認為貓鼬會立即嘗試查找String而不是像以前那樣查找Number

暫無
暫無

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

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