我有一个简单的界面:
$search.val( term );
$search.trigger( 'keyup' );
$search.trigger( 'change' ); //Here
接下来我想进行下一次实施
Criteria toCriteria(String key, String value)
但没有 $ eq 运算符。所以我的问题:
public class EqExpression implements Expression
{
@Override
public Criteria toCriteria(String key, String value)
{
return Criteria.where(key).eq(Pattern.compile(value));
}
}
}
没有这样的运算符?有没有办法实施自定义条件实施,还是有解决方法?
对我来说,拥有像
这样的代码会很好org.springframework.data.mongodb.core.query.Criteria
一般来说,我的目的是实现其他查询语言,对于 @Override
public Criteria toCriteria(String key, String value)
{
//return new BasicDBObject(key, new BasicDBObject("$eq", value)) converted to Criteria
}
,gt
这样的每个操作,我都有lt
接口的具体实现。
请求可能看起来像Expression
我正在使用下一代码构建整个查询:
name=John&age>20
您可能有任何建议如何实现它更优雅
答案 0 :(得分:0)
使用此answer,我能够创建简单的$ eq条件
private Criteria getEqCriteria(String value)
{
// hack Criteria, because new Criteria().is(value) not working!
Criteria c = new Criteria();
try
{
Field _criteria = c.getClass().getDeclaredField("criteria");
_criteria.setAccessible(true);
@SuppressWarnings("unchecked")
LinkedHashMap<String, Object> criteria = (LinkedHashMap<String, Object>) _criteria.get(c);
criteria.put("$eq", value);
Field _criteriaChain = c.getClass().getDeclaredField("criteriaChain");
_criteriaChain.setAccessible(true);
@SuppressWarnings("unchecked")
List<Criteria> criteriaChain = (List<Criteria>) _criteriaChain.get(c);
criteriaChain.add(c);
} catch (Exception e)
{
// Ignore
}
return c;
}