我有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();
OR
Query<BatchData> q = mongo.createQuery(BatchData.class).field("val1").equal(BatchData.class.val2)
可能有一百万或更多BatchData
份文件,所以我必须只有
因性能原因返回uuid
。
一直在阅读维基,无法理解或看到两个成员字段的过滤器 Morphia wiki
答案 0 :(得分:1)
我不认为Morphia有任何简洁的方法可以做到这一点,但您可以使用基本的Java MongoDB库并使用支持Javascript的$ where运算符。
BasicDBObject query = new BasicDBObject( "$where",
"function() { return this.val1 == this.val2 }" );
DBCollection fieldsCollection = db.getCollection("BatchData");
DBCursor cursor = fieldsCollection .find(query);
它不是超快,因为它需要解压缩并扫描每个对象而不能使用索引,但它会做你想要的。
答案 1 :(得分:1)