我们假设我在mongodb中有一些文档集合:
{aField: 1},
{aField: 4},
{aField: 5}
我正在尝试编写一个MongoRepository(来自Spring Data)方法
@Query(...)
List<DomainObject> find(String aParam)
具有以下要求:
在一个查询中是否可行?或者我是否需要准备两个单独的查询并在(Java)代码中选择一个正确的查询?
我正在尝试做这样的事情:
@Query"{$or: [
{aField: {$lte: ?0}, 4: {$gt: ?0}}},
{aField: {$gt: 4}, 4: {$lte: ?0}}
]}"
或
@Query"{$or: [
{$and: [{aField: {$lte: ?0}}, {4: {$gt: ?0}}]},
{$and: [{aField: {$gt: 4}}, {4: {$lte: ?0}}]}
]}"
两个查询都有效但不起作用。角落案例在这里并不重要(gt vs gte等)。我正在寻找一个通用的解决方案。
我将不胜感激。
答案 0 :(得分:1)
您正在寻找动态条件,场景的伪代码
storage/framework/sessions
目前无法在单个查询中执行此操作,您必须等待Mongo版本3.3.5并且当前可用official version is 3.2.10,请参阅https://jira.mongodb.org/browse/SERVER-10689
所以请在java层本身中执行此逻辑。
希望它有帮助!