如何将以下mongo查询转换为morphia查询。
db.sales.aggregate([
{
$project: {
items: {
$filter: {
input: "$items",
as: "item",
cond: { $gte: [ "$$item.price", 100 ] }
}
}
}
}
])
答案 0 :(得分:1)
我相信Morphia和official Java driver都没有通过帮助函数支持$ filter。但你可以这样做:
AggregateIterable<Document> output = collection.aggregate(Arrays.asList(
new Document("$project", new Document("_id", 0)
.append("items", new Document("$filter",
new Document("input", "$items")
.append("as", "item")
.append("cond", new Document("$gte", Arrays.asList("$$item.price", 100)))
))),
new Document("$unwind", "$items")
));
// Print for demo
for (Document dbObject : output) {
System.out.println(dbObject);
}
由于Morphia需要Java驱动程序,所有这些类都应该已经在com.mongodb
包中提供。