MongoDB
 sql >> डेटाबेस >  >> NoSQL >> MongoDB

स्प्रिंग-मोंगोडीबी एग्रीगेशन फ्रेमवर्क में $cond ऑपरेशन का उपयोग कैसे करें

यदि वर्तमान स्प्रिंग डेटा रिलीज़ का उपयोग कर रहे हैं जिसमें $cond . के लिए समर्थन है $project . के माध्यम से ऑपरेटर पाइपलाइन, फिर इसे (अप्रयुक्त) में परिवर्तित किया जा सकता है:

import static org.springframework.data.mongodb.core.aggregation.Aggregation.*;
import static org.springframework.data.mongodb.core.aggregation.ConditionalOperators.Cond.*;
import org.springframework.data.mongodb.core.query.Criteria;

Cond condOperation = ConditionalOperators.when(Criteria.where("start").is("EARLY"))
                                    .thenValueOf("deltastart.start")
                                    .otherwise("deltastart.end");

Aggregation agg = newAggregation(project().and(condOperation).as("start"));
AggregationResults<MyClass> results = mongoTemplate.aggregate(agg, MyClass.class); 
List<MyClass> myList = results.getMappedResults();

स्प्रिंग-डेटा MongoDB संस्करण के लिए जिसमें $cond . के लिए समर्थन नहीं है एग्रीगेशन ऑपरेशन में ऑपरेटर, एक वर्कअराउंड है जो एग्रीगेशनऑपरेशन को लागू करना है एक DBObject में लेने के लिए इंटरफ़ेस:

public class CustomProjectAggregationOperation implements AggregationOperation {
    private DBObject operation;

    public CustomProjectAggregationOperation (DBObject operation) {
        this.operation = operation;
    }

    @Override
    public DBObject toDBObject(AggregationOperationContext context) {
        return context.getMappedObject(operation);
    }
}

फिर $project . लागू करें एकत्रीकरण पाइपलाइन में DBObject के रूप में संचालन जो आपके पास समान है:

DBObject operation = (DBObject) new BasicDBObject(
    "$project", new BasicDBObject(
         "start", new BasicDBObject(
                "$cond", new Object[]{
                        new BasicDBObject(
                            "$eq", new Object[]{ "$start", "EARLY"}
                        ),
                        "$deltastart.start",
                        "$deltastart.end"
                 }
           )
     )
);

जिसे आप तब TypeAggregation में उपयोग कर सकते हैं:

TypedAggregation<CustomClass> aggregation = newAggregation(CustomClass.class,
    new CustomProjectAggregationOperation(operation)
);
AggregationResults<CustomClass> result = mongoTemplate.aggregate(aggregation, CustomClass.class); 


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB - एक दस्तावेज़ बनाएँ

  2. किसी सरणी में पहले आइटम में मिलान करने के लिए MongoDB को क्वेरी करना

  3. नवीनतम MongoDB संस्करण में अपग्रेड करने के लिए टिप्स

  4. DigitalOcean पर MongoDB चलाना

  5. मोंगोडीबी और काफ्का के साथ नोएसक्यूएल डेटा स्ट्रीमिंग