我在互联网上发现如何用小写更新所有的文档字段值。幸运的是,我找到了一个根据我的需求修改的查询,它运行正常。
db.messages.updateMany({},
[
{
$set: {
recipientEmail: {
$toLower: '$recipientEmail'
},
senderEmail: {
$toLower: '$senderEmail'
}
}
}
],{ multi: true })但是现在我试图将这个查询转换成Java代码,我无法转换它。我再次开始调查互联网,但找不到任何代码。所以,有人能帮我把这个查询转换成Java代码吗?这样我就可以在Spring应用程序中使用它了吗?提前谢谢。
发布于 2022-09-22 12:29:07
您可以在存储库接口中使用@Query注释,并按原样传递查询(在方法签名之上)。以下是一个例子:
@Query("{$and:["
+ " {'id': ?0},"
+ " {$or:["
+ " {'customerId': ?1},"
+ " {'specificCode': ?4}"
+ " ]},"
+ " {'beginDate' : { $gte: ?2}},"
+ " {$or:["
+ " {'endDate' : { $lte: ?2}},"
+ " {'endDate' : {$exists: false}}"
+ " ]},"
+ " {'numberOfTimesUsed': { $lt: ?3}}"
+ "]}")发布于 2022-09-22 16:45:55
你可以试试这样的东西:
Query query = new Query();
Update update = new Update();
update.set("recipientEmail", StringOperators.valueOf("recipientEmail").toUpper());
update.set("senderEmail", StringOperators.valueOf("senderEmail").toUpper());
mongoTemplate.updateMulti(query, update, Messages.class);由于您是聚合管道形式的update,所以可以尝试如下:
Query query = new Query();
AggregationUpdate update = AggregationUpdate.update().set("recipientEmail").toValue(StringOperators.valueOf("recipientEmail").toUpper()).set("senderEmail").toValue(StringOperators.valueOf("senderEmail").toUpper());
mongoTemplate.updateMulti(query, update, Messages.class);https://stackoverflow.com/questions/73814487
复制相似问题