node.js - MongoDB - NodeJS 动态更新指定索引处的数组元素
问题描述
我根据动态创建的索引更新我的集合时遇到问题。我想要做的是使用以下代码更新我的里程碑数组:
var query1 = 'milestones.'+data.next_milestone+'.actual_date';
var query2='milestones.'+data.next_milestone+'.submitted';
var query3= 'milestones.'+data.next_milestone+'.comment' ;
Project.findByIdAndUpdate(req.body.id,
{$set:
{
query1 : new Date(req.body.date),
query2 : true,
query3 : req.body.comment,
"next_milestone" : data.next_milestone+0
}}).then((data)=>{
res.status(200).send();
})
我测试了查询字符串,它们都产生正确的字符串,例如:
milestones.1.comment
但是我的收藏没有更新,下一个里程碑部分正在工作我在那里设置 0 以防止它在测试时更新......
解决方案
您可以通过 ID 标识要更新的里程碑可以使用 mongo $ 运算符标识来更新数组内的里程碑/对象
Project.findOneAndUpdate({_id: req.body.id, "milestones._id": <your_milestone_id> },
{ $set: { "milestones.$.comment" : 666 } },function(err,doc){
});
在此处查看详细信息: https://docs.mongodb.com/manual/reference/operator/update/positional/#up。小号
如果要添加新的里程碑,请改用 mongo push: https ://docs.mongodb.com/manual/reference/operator/update/push/
推荐阅读
- postgresql - 如何为 postgresql 中的查询创建辅助函数?
- javascript - 我想通过循环遍历javascript中的两个数组来推送第三个数组中的唯一元素
- c++ - 在 CMake 中添加包含路径和 lib 文件
- javascript - 使用 reduce 转换数组(属性未定义)
- cefsharp - Find 方法 - 多个搜索同时运行
- python - 处理由 Python 中的 bin 表示的分类缺失值?
- c++ - 如何使用模板和 const 关键字处理指向类型?
- amazon-web-services - 不使用分区键查询 DynamoDB 表的全局二级索引
- python - django模型文件字段中的默认图像?
- javascript - 为什么使用 google oauath isSignedIn,listen()?