のは、私がコレクションitems
を持っており、これらは、このコレクション内のデータで言ってみましょう:JavaモデルでMongoDBの春データ集計平均
{
"_id": 1
"tags": ["handbag", "women", "leather"]
"price": 30
}, {
"_id": 2
"tags": ["jewelry", "women", "necklace"]
"price": 40
}, {
"_id": 3
"tags": ["men", "leather", "necklace"]
"price": 10
}
Iの平均価格を取得するにはどうすればよい
class Item {
public ObjectId id;
public List<String> tags;
public int price;
}
leather
とタグ付けされているアイテムはありますか?
私はMongoDBのCLIから私はこれを得ることができることを知っている:
db.items.aggregate([
{ $match: { tags: { $in: ["leather"] } } },
{ $group: { _id: null, averagePrice: { $avg: "$price" } } }
])
しかし、どのように私はJavaの春ブーツ/データコードにこれを変換することができますか? Aggregation.group()
メソッドはフィールドの名前のみを受け入れます。_id: null
を指定することはできません。そのため、一致するすべての要素を1つのグループとしてグループ化します。ここで
は、Java
JavaでAggregation.newAggregation(
match(Criteria.where("tags").in("leather")),
group("_id") // how to group all matching rows in one group.
.avg("price").as("averagePrice")
);
文書のためのあなたの同等のJavaモデルは何か? – nullpointer
質問をモデルに更新しました。 – danial
'' Aggregation agg = Aggregation.newAggregation( )( "leather")) group().avg( "price")as( "averagePrice") ) ; ' – Veeram