2017-03-16 8 views
0

を形成するために、入力のように)(新しい日付を使用すると、誰もが春のmongo突起がこの文を達成する方法を知っているん:このようなMongoの集約:AggregationExpression

timed: { 
    $divide: [{ $subtract: [ new Date(), "$created" ] }, 7200000] 
} 

何かが私のために動作しません。

ArithmeticOperators.Subtract updated = valueOf("new Date()").subtract("created"); 

のvalueOfがフィールド参照またはあなたがステージの下試すことができAggregationExpression

答えて

1

を見込んでいるため。シェルクエリのnew Date()はjavascriptの日付関数です。その式をAggregationExpression内にラップするには、BasicDBObjectを使用する必要があります。

ArithmeticOperators.Divide updated = ArithmeticOperators.Divide.valueOf(aggregationOperationContext -> new BasicDBObject("$subtract", Arrays.asList(new Date(), "$created"))).divideBy(7200000); 
AggregationOperation project = Aggregation.project().and(updated).as("timed"); 
Aggregation agg = newAggregation(project); 

私は2つの日付の引数あなたの答えのための

valueOf("created").subtract(new Date()) 
+0

おかげのようなものを渡す方法を見つけることができませんでした。 数値の値を期待しているためvalueOfが機能しません。ord AggregationEspressionまたはfieldReference(文書内の指定されたフィールド) –

+0

ありがとうございます。 これは完全に動作します.... –

関連する問題