使用Morphia或Mongo java驱动程序检查查询是否与文档

时间:2018-06-15 08:16:58

标签: mongodb mongodb-query morphia mongo-java-driver

我可能没有一个非常典型的用例,但我想要实现的目标如下: 给定Morphia / MongoQuery(本质上是一个DBObject),我想知道是否匹配文档(另一个DBObject)。如果我将此文档放入mongodb集合并运行查询,并且此查询返回此文档,我知道它匹配。但是有可能在不将该文档放入数据库的情况下实现这一目标吗?或者我可以只使用该文档创建虚拟/内存中的集合,并在完成匹配后将其丢弃?

提前致谢!

UPD : 实际上它与mongodb没有直接关系,但我只是想"滥用"查询语言的表现力以及我对mongodb / morphia非常熟悉的事实。

我的用例是:假设我在内存中有一个实体,如:

  

{年龄:23​​岁,性别:" F",国家/地区:" GBP"}

我希望看看该实体是否符合预定义的规则状态。 E.g:

  

(年龄> 20和国家IN ["美国"," DEU"])或(年龄> 21和性别=   " M&#34)

我可以拿出自己的DSL,为它编写解析器然后编写匹配器。或者,我的希望是,我可以重用MongoDB中的查询语言和查询引擎,以便能够查询"仅包含该1个文档的虚拟集合,并查看该查询是否返回任何结果。这将为我节省很多努力。

1 个答案:

答案 0 :(得分:0)

由于似乎无法这样做(或者我只是没有找到实现这一目标的方法),我想出了另一种解决方案并使用了JEXL(http://commons.apache.org/proper/commons-jexl/