我有mongodb运行并使用吗?
拥有BatchData
文档的集合,需要过滤掉一些字段值。
这是实体:
@Entity
public class BatchData {
@Id private ObjectId id;
public int val1;
public int val2;
public String uuid;
}
如果
val1
等于val2
,则查询应返回uuid
到目前为止,但这当然是行不通的:
Query<BatchData> q = mongo.createQuery(BatchData.class).field("val1").equal("val2");
List<BatchData> entities = q.asList();
要么
Query<BatchData> q = mongo.createQuery(BatchData.class).field("val1").equal(BatchData.class.val2)
可能有一百万或更多的
BatchData
文档,所以我只能出于性能原因返回
uuid
。正在阅读维基,无法理解或看到两个成员字段的过滤器
Morphia wiki
最佳答案
如果性能非常重要,则应查看map-reduce函数。不幸的是,morphia不支持此MongoDB功能,因此您需要使用java mongo驱动程序本身。请参见example和docs。