当我使用_id更新子文档时,_id部分会被写入,所以我没有任何唯一元素可供下次更新。有谁可以帮我解决这个问题?我正在使用Mongoose.js
这是查询
action.sendKeys(driver.findElement(By.xpath("//input[@name='data[param_p][1]']")),
"250000").build().perform();
以下是更新前的数据
return Organization.update({
'orgId': values.orgId,
"companyStatus._id": values.companyStatusId
}, {
$set: {
"companyStatus.$": values.companyStatus
}
})
并在更新后
companyStatus: [{
"name" : "Manger",
"_id" : ObjectId("5788b9dec116c39753f77cfb")
},
{
"name" : "Open",
"_id" : ObjectId("5788b9dec116c39753f77cfe")
}]
所以我没有唯一的ID来下次更新此记录
我发送更新的数据
companyStatus: [{
"name" : "Manger"
},
{
"name" : "Open",
"_id" : ObjectId("5788b9dec116c39753f77cfe")
}]
答案 0 :(得分:0)
你可以分享这个集合的find()。limit(2)的结果吗?你提供的是有点混乱。
首先,您需要了解数组更新中$运算符的行为:
https://docs.mongodb.com/manual/reference/operator/update/positional/#up.S
您的更新命令正在替换'companyStatus'数组的整个文档。就像删除所有键并设置新闻一样。
如果你真的想在这个数组中更新,你可以这样做:
return Organization.update({
'orgId': values.orgId,
"companyStatus._id": values.companyStatusId
}, {
$set: {
"companyStatus.$.name": values.companyStatus.name
}
})
或者你可以在companyStatus键中迭代(如果你想更新另一个字段)并创建一个“set”对象。