【问题标题】:Remove quotes from MongoTemplate query with $in clause使用 $in 子句从 MongoTemplate 查询中删除引号
【发布时间】:2016-04-13 17:36:54
【问题描述】:

我有结合各种条件的 mongoTemplate 查询。在这个查询中,我需要通过一组 ID 来选择文档。所以我使用“in”方法。

这是我的代码:

Query query = new Query(Criteria.where("sizeId").is(sizeId));

query.addCriteria(Criteria.where("companyId").in(companyIds));

List<StatisticUnit> result = mongoTemplate.find(query, StatisticUnit.class);

“companyIds”是一个整数值列表。

我没有得到任何结果,因为 MongoTemplate 将 $in 运算符参数包装在 qoutes 中,以便 Mongo 将它们视为字符串。真正的查询是这样的:

$in: ["5", "15"]

而不是

$in: [5, 15]

如何告诉 mongoTemplate 不要忽略一种类型的集合值,并且在 Integer 的情况下不要将它们用引号引起来?谢谢!

【问题讨论】:

  • companyIds 是什么类型?,Collection>
  • @Document 注释类中的“companyId”类型是什么?我猜这可能是 StatisticUnit。应该是整数
  • companyIds 是 ArrayList,StatisticUnit 类中的 companyId 是 Integer 类型。
  • 谢谢大家,这是关于集合类型的。

标签: spring mongodb spring-data spring-data-mongodb


【解决方案1】:

我自己解决了这个问题。当我使用 HashSet 而不是 ArrayList 时,一切正常。希望这对其他人有帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-30
    • 1970-01-01
    • 2017-05-08
    • 2018-11-21
    • 2022-01-16
    • 1970-01-01
    • 1970-01-01
    • 2012-04-24
    相关资源
    最近更新 更多