首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将自定义Mongo更新查询转换为Java代码

如何将自定义Mongo更新查询转换为Java代码
EN

Stack Overflow用户
提问于 2022-09-22 12:17:12
回答 2查看 47关注 0票数 0

我在互联网上发现如何用小写更新所有的文档字段值。幸运的是,我找到了一个根据我的需求修改的查询,它运行正常。

代码语言:javascript
复制
db.messages.updateMany({},
[
  {
    $set: {
      recipientEmail: {
        $toLower: '$recipientEmail'
      },
      senderEmail: {
        $toLower: '$senderEmail'
      }
    }
  }
],{ multi: true })

但是现在我试图将这个查询转换成Java代码,我无法转换它。我再次开始调查互联网,但找不到任何代码。所以,有人能帮我把这个查询转换成Java代码吗?这样我就可以在Spring应用程序中使用它了吗?提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2022-09-22 12:29:07

您可以在存储库接口中使用@Query注释,并按原样传递查询(在方法签名之上)。以下是一个例子:

代码语言:javascript
复制
@Query("{$and:["
            + "     {'id': ?0},"
            + "     {$or:["
            + "         {'customerId': ?1},"
            + "         {'specificCode': ?4}"
            + "     ]},"
            + "     {'beginDate' : { $gte: ?2}},"
            + "     {$or:["
            + "             {'endDate' : { $lte: ?2}},"
            + "             {'endDate' : {$exists: false}}"
        
            + "     ]},"
            + "     {'numberOfTimesUsed': { $lt: ?3}}"
            + "]}")
票数 0
EN

Stack Overflow用户

发布于 2022-09-22 16:45:55

你可以试试这样的东西:

代码语言:javascript
复制
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,所以可以尝试如下:

代码语言:javascript
复制
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);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73814487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档