2017-10-12 15 views
0

以下の例のように、コレクション内の各ドキュメントのリスト内の要素の数を数えようとしています。 (https://docs.mongodb.com/manual/reference/operator/aggregation/size/#exp._S_sizeリストのサイズを取得するモーフィアス集計クエリ

db.inventory.aggregate(
    [ 
     { 
     $project: { 
      item: 1, 
      numberOfColors: { $size: "$colors" } 
     } 
     } 
    ] 
) 

このクエリは、各ドキュメントのリスト "色"のサイズを返します。上記の実行に

pipeline = ds.createAggregation(Abc.class) 
       .match(query) 
       .project(Projection.projection("count", 
       Projection.expression("$size","colors"))); 

がエラー:

同等morphiaのクエリはこのようなものになるだろうjava.lang.Stringではcom.mongodb.DBObject
にキャストすることはできません私は同等に到着することができませんモルフィアクエリは、同じを達成する。
この点に関するお手伝いがあれば幸いです。

+0

[モルフィアとMongoアグリゲーションパイプラインでオペレータを使用する正しい方法は何ですか?](https://stackoverflow.com/questions/45214057/what-is-the-correct-way-to-use-operators -in-mongo-aggregation-pipeline-with-mor) – Veeram

+0

私はこれに言及したソリューションを試しましたが、無駄でした。 –

答えて

0

あなたは色の前にドルで

Projection.expression("$size","$colors"))); 

を試してみましたか?

+0

$で試したところ、エラーが発生しました。java.lang.Stringはcom.mongodb.DBObjectにキャストできません –