我想使用Java将mongodb中所有以XYZ结尾的匹配字符串替换为ABC

6uxekuva  于 2023-03-22  发布在  Go
关注(0)|答案(1)|浏览(143)
Document filter = new Document("attribute", new Document("$regex", "XYZ$"));
        Document update = new Document("$set", new Document("attribute",
                new Document("$replaceOne", new Document("input", "$attribute")
                        .append("find", "XYZ")
                        .append("replacement", "ABC"))));

        var result = coll.updateMany(filter, update);
        System.out.println(result.getModifiedCount());

上面是将属性设置为replaceOne对象而不是值。请告诉我我的错误。

zbdgwd5y

zbdgwd5y1#

问题是你正在执行this query,其中update对象无法识别$replaceOne,因此它被插入到对象中。
Yo需要this query,其中update对象是一个聚合管道。除了添加[]之外,几乎相同。
所以我没有测试过,但你的update值可以是这样的:

List<Document> update = Arrays.asList(
    new Document("$set", 
        new Document("attribute", 
            new Document("$replaceOne", 
                new Document("input", "$attribute")
                    .append("find", "XYZ")
                    .append("replacement", "ABC")
            )
        )
    )
);

相关问题