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

时间:2017-12-03 11:07:25

标签: morphia

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

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

1 个答案:

答案 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包中提供。