我有如下所示的架构数据
import (
"github.com/mattn/go-sqlite3"
)
if err != nil {
if sqlite3Err, ok := err.(*sqlite3.Error); ok {
if sqlite3Err.Code == sqlite3.ErrConstraint && sqlite3Err.ExtendedCode == 1555 {
// SQLITE3 ERROR 1555 : PRIMARY KEY CONSTRAINT ERROR
return errors.New("Log Error")
}
}
我正尝试通过以下方式更新设备
{
id:'5d60fd38f6999a7792c940a4'
name:'test',
department:[
{
d_name:'Rd',
_id:'5d61092b1f234c11348eb831'
equipements:[
{
id:'5d637abd7ddd183263fa4ebc'
e_name:'first'
},
]
}
]
}
但不幸的是,该查询没有更新我的设备数据。 可以让我知道正确的更新方法。谢谢
答案 0 :(得分:0)
您需要使用equipements.id
搜索才能扩展name
这可以工作
College.updateOne({
_id: productObjectID,
"department._id": variantObjectId,
"department.equipements.id": equipementId
},{ "$set": {"department.equipements.$.name": "updatedName"} });
答案 1 :(得分:0)
我认为您正在尝试实现以下目标:
db.dummyTest.updateOne({ "_id" : ObjectId("5d63a1791b761bfc0420e590"),
"department._id": "5d61092b1f234c11348eb831",
"department.equipements._id": "5d637abd7ddd183263fa4ebc" },
{ $set: { "department.$.equipements.0.e_name.0": "Update to last" }})
MongoDB对更新嵌套数组的支持很差。因此,如果您需要经常更新数据,则最好避免使用它们
方法1:将department
设为自己的集合(将部门设为子文档而不是数组)
选项2:通过计划实现