Mongodb 执行批量语句

public void refreshTaxCode1() {

        Query query = new Query();
        query.addCriteria(Criteria.where("status").is(SkuStatus.ACTIVE.getCode()))
                .addCriteria(Criteria.where("sku_type").in(SkuType.MASTER.getCode(), SkuType.SIMPLE.getCode()));
        CloseableIterator<OnlineProductBase> stream =
                mongoTemplate.stream(query, OnlineProductBase.class);
        MongoCollection<Document> productCollection = mongoTemplate.getCollection("online_product");
        // Iterators 使用 google guava包 批量执行
        Iterators.partition(stream, 20).forEachRemaining(each -> {
            List<WriteModel<Document>> bulkWrites = new ArrayList<>();
            each.stream().forEach(elm -> {
                BasicDBObject queryDBObject = new BasicDBObject("sku_number", elm.getSkuNumber());
                Document document = new Document();
                Document append = new Document().append("mik_tax_code", "999")
                        .append("tax_code_assignment_confidence_bucket", TaxCodeConfidenceType.UNPUBLISHED.getValue());
                document.put("$set", new Document("cost", append).append("status", SkuStatus.AWAITING_TAX_CODE_ASSIGNMENT.getCode()));
                UpdateOneModel<Document> updateOneModel = new UpdateOneModel<Document>(queryDBObject, document);
                bulkWrites.add(updateOneModel);

            });
            productCollection.bulkWrite(bulkWrites);
        });
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值