Javascript 如何使用mongoose更新另一个对象中数组中的对象

Javascript 如何使用mongoose更新另一个对象中数组中的对象,javascript,node.js,mongodb,mongoose,discord.js,Javascript,Node.js,Mongodb,Mongoose,Discord.js,我有以下结构 { “serverId”:serverId, “名称”:服务器名称, “成员”:[ { “生日”:{ “$date”:{ “$numberLong”:生日 } }, “用户”:用户名, }, { “生日”:{ “$date”:{ “$numberLong”:生日2 } }, “用户”:userName2, } ] } } 我不知道如何使用Mongoose来更新其中一个成员的生日 我存储的对象有两个模型: const{Schema,model}=require('mongoose'

我有以下结构

{
“serverId”:serverId,
“名称”:服务器名称,
“成员”:[
{
“生日”:{
“$date”:{
“$numberLong”:生日
}
},
“用户”:用户名,
},
{
“生日”:{
“$date”:{
“$numberLong”:生日2
}
},
“用户”:userName2,
}
]
}
}
我不知道如何使用Mongoose来更新其中一个成员的生日

我存储的对象有两个模型:

const{Schema,model}=require('mongoose'))
常量memberSchema=Schema({
生日:{
默认值:“”,
类型:日期,
},
用户:{
默认值:“”,
类型:字符串,
},
})
module.exports=model('Member',memberSchema',memberTest')
const mongoose=require('mongoose'))
const serverSchema=mongoose.Schema({
服务器ID:{
默认值:“1”,
类型:字符串,
},
姓名:{
默认值:“emptyServer”,
类型:字符串,
},
成员:[],
})
module.exports=mongoose.model('Server',serverSchema',servers')
我试过这样做:


const newBirthday=新成员({
用户:message.author.tag,
生日:日期
})
让dbMember=dbServer.members.filter(member=>member.user=message.author.tag)
if(dbMember){
dbServer.update({'members.user':message.author.tag},{'$set':{
'members.$.user':message.author.tag,
“成员.$.生日”:日期
}})
}否则{
dbServer.members.push(新出生日)
}
dbServer.save()
但它不会更新数据库中的成员


在我测试了这个之后,我可以看到对象上的更新(通过记录它),但是当我查看de DB时,更改并不存在。我不完全确定我所做的是否真的偏离了轨道

我不确定,但看看是否可以直接更新成员本身:
const member=dbServer.members.find(m=>m.user==message.author.tag);member.birth=日期;member.save()
不,member没有save函数()。如果您像示例中那样更改模式,我认为它可能会起作用。在这种情况下,
成员:[]
将是对
成员
实例的引用数组。