2017-04-26 9 views
0

私は現在、春データモンゴDBに取り組んでいると私は春のデータのmongo DB上の春の床と切り上げのいずれかの実装があるかどうか知りたいのですが、私が持っている

次のクエリ:

db.event.aggregate([{$プロジェクト:{ "のisActive":1、 "diff_msecs":{$減算:[ "$たstartDate"、新ISODate()]}}} {$ project:{"isActive":1、 "diff_msecs":1、 "diff_days":{$ floor:{$ divide:["$ diff_msecs"、1000 * 60 * 60 * 24]}}}}、{ $ match:{"isActive":false、 "diff_days":1}}]);

と春データ集約

答えて

0

あなたは春のmongoデータ1.5.2.RELEASEバージョンを使用して、以下の集約を試みることができるで$床を解釈する必要があります。

ArithmeticOperators.Floor floor = ArithmeticOperators.Floor.floorValueOf(ArithmeticOperators.Divide.valueOf("diff_msecs").divideBy(1000 * 60 * 60 * 24)); 
ProjectionOperation project1 = Aggregation.project("isActive").and(aggregationOperationContext -> new BasicDBObject("$subtract", Arrays.asList("$startDate", new Date()))).as("diff_msecs"); 
ProjectionOperation project2 = Aggregation.project("isActive", "diff_msecs").and(floor).as("diff_days"); 
MatchOperation match = Aggregation.match(Criteria.where("isActive").is(false).and("diff_days").is(1)); 
Aggregation agg = newAggregation(project1, project2, match); 

追記:あなたはパイプラインの第一段階として、フィルタのisActive$match一部を移動することができます。もしあなたがいなければ、MongoDBはそれを最適化してトップに移動します。