java - 如何使用 Java 在 MongoDB 3 中使用多个过滤器执行文档的批量更新

标签 java mongodb filter driver bulk

我想像这样进行批量更新:

        List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
    writes.add(
            new UpdateOneModel<Document>(
                    new Document("car", "Ferrari"), // filter
                    new Document("$set", new Document("color", "Black")) // update
            )
    );

但我想输入多个过滤器。我认为它会是这样的:

        List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
    writes.add(
            new UpdateOneModel<Document>(
                    new Document(and(eq("car", "Ferrari"), eq("color", "Red"), // filter
                    new Document("$set", new Document("color", "Black")) // update
            )
    );

但是显然不行,到处都找不到。有谁知道是否有办法做到这一点?谢谢:)

最佳答案

使用 append 添加其他键:

List<WriteModel<Document>> writes = new ArrayList<WriteModel<Document>>();
writes.add(
    new UpdateOneModel<Document>(
        new Document("car", "Ferrari").append("color", "Red"), // filter
        new Document("$set", new Document("color", "Black")) // update
    )
);

关于java - 如何使用 Java 在 MongoDB 3 中使用多个过滤器执行文档的批量更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42340346/

相关文章:

Java过滤器列表,因此它只包含与另一个列表中具有相同属性的对象

performance - Kolmogorov – 滤波器 Matlab

java - 在 http API 中引发 "bad requests"异常是否是一种好习惯 - 与(Java)最佳实践相矛盾

java - 如何在运行时加载接口(interface)的实现并调用该类的方法?

javascript - 使用 .find() 的 Mongoose 静态函数返回查询,并且静态函数无法识别

javascript - 无法调用休息电话

node.js - 蒙戈错误: authentication failed (code 18) when connecting to mLab from node app

jquery - 选择框作为类别过滤器在 Chrome、IE 上不起作用。

java - jOOQ:在单个对象中返回带有 join、groupby 和 count 的列表

java - OOP 和堆/栈