sql >> データベース >  >> NoSQL >> MongoDB

Springデータを使用した$projectMongoDB内の$filter

    Spring bootバージョン1.4.1.RELEASEで問題を解決し、これを実行しました:

    Aggregation aggregation = newAggregation(
                match(Criteria.where("devices.evaluationDate").is(date)),
                project().and(new AggregationExpression() {
                    @Override
                    public DBObject toDbObject(AggregationOperationContext aggregationOperationContext) {
                        DBObject filterExpression = new BasicDBObject();
                        filterExpression.put("input", "$devices");
                        filterExpression.put("as", "device");
                        filterExpression.put("cond", new BasicDBObject("$eq", Arrays.<Object> asList("$$device.evaluationDate", date)));
                        return new BasicDBObject("$filter", filterExpression);
                    }
                }).as("devices")
        );
    
        AggregationResults<SpotMovimientos> list = mongoOperations.aggregate(aggregation,
                MyClass.class, MyClass.class);
    

    これに基づいて詳しく説明しました:Spring DataMongoDbは$filter配列集計演算子をサポートしていますか?

    私のプロジェクトはSpringboot1.4.0.RELEASEでしたが、そのバージョンには AggregationExpressionがありませんでした インターフェイスPUBLICなので、1.4.1.RELEASEに更新したところ、動作しました。



    1. JSONを表すRedis文字列とRedisハッシュ:効率?

    2. MongoDBの正規化、外部キー、および結合

    3. resque-schedulerがジョブの削除に失敗する

    4. WindowsAzureでRedisを使用してアウトプロセスキャッシュを実装する