使用Java中的findOneAndUpdate方法更新MongoDB文档

问题描述 投票:0回答:1

有人可以看一下这个问题,因为我们无法将数组插入字段“ d”,如下所示JSON Structure in MongoDB

我们正在查询文档以更新ps数组中的任何字段,并在d字段中插入一个数组,如下所示。

public void updateTesting() {
    Bson where = new Document().append("_id", 123456789012345L).append("session.ps.apn","abcdef");
    Bson update1=new Document().append("th", "value3");

         Bson update = new Document()
                    .append("session.ps.$.apn", "klo");
         Bson set = new Document().append("$set", update).append("$addToSet", update1);
         List<Bson> list=new ArrayList<>();
         list.add(set);

         tim.findOneAndUpdate(where , set);

}

在上面的测试中,我们尝试在'th'字段中插入对象,该对象成功,但是对于'd'字段则不可能。请在此告诉我们我们做错了什么。请评论任何所需信息。预先感谢。

java database mongodb bson
1个回答
0
投票

您必须使用arrayFilters更新特定的数组元素(有条件)。 Java中的数组过滤器是通过FindOneAndUpdateOptions对象定义的。

© www.soinside.com 2019 - 2024. All rights reserved.