【发布时间】:2022-01-17 05:51:33
【问题描述】:
更新:我使用这里有人推荐的 arrayFilters 调整了查询,查询成功返回,但是数据库中的值永远不会改变。
我正在尝试根据传递给数据库函数的值更新 mongodb 集合中的某些字段。
module.exports.update_sprint = async function
update_sprint(teamname, update_data, sprint, sprintStar) {
for(var i in update_data) {
console.log(update_data[i].stars)
console.log(update_data[i].name)
TeamM.findOneAndUpdate({teamName: teamname}, {
$set: {
'sprints.$[a].stars.$[b].stars': update_data[i].stars,
'sprints.$[a].stars.$[b].points': update_data[i].points,
'sprints.$[a].sprintstars': sprintStar
}
}, {arrayFilters: [{"a.sprintnum": sprint}, {"b.name":
update_data[i].name}]}
,
function(error, success) {
if (error) {
console.log(error)
} else {
console.log(success)
}}
)
}
}
数据库格式: enter image description here
我得到:
1
member1@lewisu.edu
0
member2@lewisu.edu
{
_id: new ObjectId("61b90840654b60a745e7e102"),
teamName: 'testing',
members: [ 'member1@lewisu.edu', 'member2@lewisu.edu' ],
scrumMaster: 'member1@lewisu.edu',
totalMembers: 2,
sprints: [ { sprintnum: 1, stars: [Array], sprintstar: 'None' } ],
__v: 0
}
{
_id: new ObjectId("61b90840654b60a745e7e102"),
teamName: 'testing',
members: [ 'member1@lewisu.edu', 'member2@lewisu.edu' ],
scrumMaster: 'member1@lewisu.edu',
totalMembers: 2,
sprints: [ { sprintnum: 1, stars: [Array], sprintstar: 'None' } ],
__v: 0
}
查询成功返回,但数据库中的值未更新
【问题讨论】:
-
结果告诉你
modifiedCount= 0,表示没有匹配的条目需要修改 -
我看到了,但是条目在那里,我只是认为我没有正确设置搜索参数。
-
你能从请求中提供你的团队名称和 sprintum 的记录吗?
-
更新了输出
标签: javascript node.js mongodb express mongoose