我可能没有一个非常典型的用例,但我想要实现的目标如下: 给定Morphia / MongoQuery(本质上是一个DBObject),我想知道是否匹配文档(另一个DBObject)。如果我将此文档放入mongodb集合并运行查询,并且此查询返回此文档,我知道它匹配。但是有可能在不将该文档放入数据库的情况下实现这一目标吗?或者我可以只使用该文档创建虚拟/内存中的集合,并在完成匹配后将其丢弃?
提前致谢!
UPD : 实际上它与mongodb没有直接关系,但我只是想"滥用"查询语言的表现力以及我对mongodb / morphia非常熟悉的事实。
我的用例是:假设我在内存中有一个实体,如:
{年龄:23岁,性别:" F",国家/地区:" GBP"}
我希望看看该实体是否符合预定义的规则状态。 E.g:
(年龄> 20和国家IN ["美国"," DEU"])或(年龄> 21和性别= " M&#34)
我可以拿出自己的DSL,为它编写解析器然后编写匹配器。或者,我的希望是,我可以重用MongoDB中的查询语言和查询引擎,以便能够查询"仅包含该1个文档的虚拟集合,并查看该查询是否返回任何结果。这将为我节省很多努力。
答案 0 :(得分:0)
由于似乎无法这样做(或者我只是没有找到实现这一目标的方法),我想出了另一种解决方案并使用了JEXL(http://commons.apache.org/proper/commons-jexl/)