Arrays MongoDB-在嵌套数组中更新对象中的多个字段
我试图更新收入数组中的月份和年份字段,但我使用的命令正在用数组中的对象替换更新的对象值。 请注意,更新的对象的键/值比原始对象的键/值少Arrays MongoDB-在嵌套数组中更新对象中的多个字段,arrays,node.js,mongodb,Arrays,Node.js,Mongodb,我试图更新收入数组中的月份和年份字段,但我使用的命令正在用数组中的对象替换更新的对象值。 请注意,更新的对象的键/值比原始对象的键/值少 { "_id" : 12j3k123132, "username" : "Alex", "password" : "12345", "email" : "a@ass", "incomes" : [ { "incomeId" : aisjdoaijfa, "month" : 10, "year" : 201
{
"_id" : 12j3k123132,
"username" : "Alex",
"password" : "12345",
"email" : "a@ass",
"incomes" : [
{
"incomeId" : aisjdoaijfa,
"month" : 10,
"year" : 2017,
"value" : 100.57,
"description" : "car wash"
}
],
"expenses" : [ ]
}
我正在运行follow命令,其中updateInfo包含将被更新的所有信息
incomeSearch.update({ _id: 12j3k123132), "incomes.incomeId": incomeId.incomeId }, {$set: {"incomes.$": updateInfo}}, (err, updateResult) => {
if (err){
res.status(500).send({error: `An error occurred. ${err}`});
}
res.status(200).send({msg: `Income updated`, result: updateResult});
});
然后只更新匹配的
“月”
和“年”
字段<代码>{“$set”:{“收入.美元.月”:11,“收入.美元.年”:2016}。只要您指定每个属性的“完整路径”,那么这些是唯一实际更新的内容。但我可能只想更新月、月、年和描述。。。。我该怎么做?这就是我给你看的。实际上,阅读它并注意到与您所做的不同。因此,您和mongodb都在说,如果不指定“完整路径”,我不能仅更新数组中对象的某些字段保持不变吗?@NeilLunn检查此链接:mongo不可能这样做,他们在MongoDB上打开了一张有此问题的票据。然后只更新匹配的“月”
和“年”
字段<代码>{“$set”:{“收入.美元.月”:11,“收入.美元.年”:2016}。只要您指定每个属性的“完整路径”,那么这些是唯一实际更新的内容。但我可能只想更新月、月、年和描述。。。。我该怎么做?这就是我给你看的。实际上,阅读它并注意到与您所做的不同。因此,您和mongodb都在说,如果不指定“完整路径”,我不能仅更新数组中对象的某些字段保持不变吗?@NeilLunn检查一下这个链接:mongo是不可能做到的,他们在MongoDB上开了一张关于这个问题的票。