gpt4 book ai didi

node.js - 如何根据父属性查找和更新数组中的子文档

转载 作者:太空宇宙 更新时间:2023-11-04 02:30:20 26 4
gpt4 key购买 nike

我需要根据其自己的 user_id 属性及其父级的 my_id 属性查找数组内的子文档

这些是我的模型(对话)的架构:

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

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

浏览完 Mongoose 的文档和一些类似的问题后,我尝试了以下方法(在我看来,它应该有效):

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

仍然不起作用,但后来我发现我将 user_id 定义为 listSchema 中的 Number,所以我将其更改为 String:

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

现在它可以工作了,无论我在查询中使用“16”还是16都没关系,我认为 Mongoose 现在会尝试查找字符串而不是像之前那样查找数字

关于node.js - 如何根据父属性查找和更新数组中的子文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27268500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com