如何在吗啡中为过滤器编写查询

How to write query in morphia for filters

如何将以下mongo查询转换为吗啡查询。

db.sales.aggregate([
  {
  $project: {
     items: {
        $filter: {
           input: "$items",
           as: "item",
           cond: { $gte: [ "$$item.price", 100 ] }
        }
     }
  }
}
])

我相信 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 包中可用。