考虑一个聚合,其形式如下:
MatchOperation matchOperation = match(Criteria.where("group").is("A")
.andOperator(Criteria.where("score").lt(50))) ;
SortOperation sortOperation = sort(Sort.by(Direction.DESC, "department"));
Aggregation aggregation = Aggregation.newAggregation(matchOperation, sortOperation) ;
我想使用Sping Boot 应用程序发布一个批量删除(或基本上删除作为上述结果发现的每个文档)。
**问题:**找不到合适的方法来执行此操作,我只想使用聚合来实现此操作,即不想切换到查询。
我已经尝试过
1.我已经尝试过使用mongoTemplate.findAllAndRemove()
,但它接受查询,我使用的是聚合。
1.我也尝试过使用BulkOperations bulkOps = mongoTemplate.bulkOps(BulkMode.ORDERED, EntityName.class) ;
和bulkOps.remove()
,但此方法也接受List<Query>
1条答案
按热度按时间tv6aics11#
你不能使用
aggregation
删除,所以我认为有两个选择:_id
,并执行新查询以删除这些_id
。类似于以下内容(未测试):
delete
查询。由于您需要使用delete,因此您可以简单地使用以下命令来避免聚合:请注意,条件与
match
中的条件相同。这是因为在find/remove/update query和aggregation query中使用条件是相同的顺便说一下,我不明白为什么排序,如果你想删除。