[英]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.