Java mongo驱动程序批量操作

时间:2017-07-14 20:06:31

标签: java mongodb spring-data-mongodb

我正在尝试使用mongo-java驱动程序进行批量操作,主要思想是在id为null时插入文档或以其他方式更新。插入操作正在运行,但是当涉及到更新时,不会应用更改(我已经尝试过upsert操作,但它不起作用)。

这是我的代码:

public BulkWriteResult bulkStockUnitUpsert(List<StockUnit>stockUnits) {
        BulkOperations ops = mongoOperations.bulkOps(BulkMode.UNORDERED, StockUnit.class);
        for (StockUnit stockUnit : stockUnits) {

            if(stockUnit.getId() != null) {
                Query query = new Query();
                query.addCriteria(Criteria.where("_id").is(stockUnit.getId()));
                Update update = new Update();
                update.set("price", stockUnit.getPrice());
                update.set("product", stockUnit.getProduct().getId());
                update.set("quantity", stockUnit.getQuantity());
                update.set("sku", stockUnit.getSku());
                update.set("variant", stockUnit.getVariant());
                ops.updateOne(query, update);
            } else {
                ops.insert(stockUnit);
            }
        }
        return ops.execute();
    }

0 个答案:

没有答案