Spring Data MongoDB - $ item支持中的$ eq

时间:2014-11-22 17:35:48

标签: spring mongodb compare project equality

我目前在我的Spring项目中为MongoDB编写了一个聚合查询,其中我使用的是$ project operator。在这个操作符中,我想比较两个字段,以便按照预计返回结果"匹配"核心价值。这是mongoDB shell的等价物(可以工作): {$project: {matches: {$eq: ["$lastDate", "$meta.date"]} } }

我已经阅读了Spring Data MongoDB文档,并找到了一些有关ProjectionOperator& 39& 39和'以及使用SpEL的方法。我调查的结果是Java代码: new ProjectionOperation().andExpression("lastDate == meta.date").as("matches")

不幸的是我收到了异常: java.lang.IllegalArgumentException: Unsupported Element: org.springframework.data.mongodb.core.spel.OperatorNode@70c1152a Type: class org.springframework.data.mongodb.core.spel.OperatorNode You probably have a syntax error in your SpEL expression!

据我所检查,Spring Data MongoDB正确处理所有算术运算符但无法处理比较运算符。因此,我想问有没有其他方法可以使用Spring Data MongoDB创建此类查询?或者我可能不知道关于SpEL的一些重要事情?

1 个答案:

答案 0 :(得分:0)

我通过将JSON聚合命令(使用DBObjects创建以保持查询的灵活性)传递给MongoDB来解决此问题,即: MongoOperations#executeCommand(DBObject command)