0

我正在尝试更新嵌套数组中的条目(“propertyOne”)。

结构如下所示:

对象结构

更新“itemlist”中的条目“name”已经有效:

    ...

    fileRepositoryEntity.updateNestedObject("randomitemid", "randompropertyid")
    
    ...

    override fun updateNestedObject(id1list: String, id2list: String): Mono<FileEntity>  {

       val cX = Criteria.where("testobj.itemList._id").`is`(id1list)
       var qX = query(cX)
       val uX: Update = Update().set("testobj.itemList.$.name", "newname")

       return mongoTemplate.findAndModify(qX,uX,FileEntity::class.javaObjectType);
    }

但是我怎样才能更新 propertyOne?

4

1 回答 1

0

看起来我找到了一个解决方案(仅更新嵌套文档数组中的特定子文档

override fun updateNestedObject(id1list: String, id2list: String): Mono<FileEntity>  {

    val c2 = Criteria.where("testobj.itemList.propertyList._id").`is`(id2list)
    var q2 = query(c2)
    val fA1 = Criteria.where("elem1._id").isEqualTo(id1list)
    val fA2 = Criteria.where("elem2._id").isEqualTo(id2list)
    val u2: Update = Update().set("testobj.itemList.$[elem1].propertyList.$[elem2].propertyOne", "newPropertyVaue").filterArray(fA1).filterArray(fA2)
    return mongoTemplate.findAndModify(q2,u2,FileEntity::class.javaObjectType);

}
于 2020-06-25T09:57:29.010 回答