अंत में समाधान मिल गया, मुझे मूल अनुरोध के मुकाबले वही परिणाम मिला।
मोंगो ड्राइवर 3 :
कुल दस्तावेज़
MongoCollection<Document> collection = database.getCollection("myCollection");
AggregateIterable<Document> output = collection.aggregate(Arrays.asList(
new Document("$unwind", "$views"),
new Document("$match", new Document("views.isActive", true)),
new Document("$sort", new Document("views.date", 1)),
new Document("$limit", 200),
new Document("$project", new Document("_id", 0)
.append("url", "$views.url")
.append("date", "$views.date"))
));
// Print for demo
for (Document dbObject : output)
{
System.out.println(dbObject);
}
आप स्थिर आयात के साथ इसे और अधिक पठनीय बना सकते हैं :import static com.mongodb.client.model.Aggregates.*;
.
पूर्ण उदाहरण के लिए कौलिनी उत्तर देखें।
मोंगो चालक 2 :
कुल दस्तावेज़
Iterable<DBObject> output = collection.aggregate(Arrays.asList(
(DBObject) new BasicDBObject("$unwind", "$views"),
(DBObject) new BasicDBObject("$match", new BasicDBObject("views.isActive", true)),
(DBObject) new BasicDBObject("$sort", new BasicDBObject("views.date", 1)),
(DBObject) new BasicDBObject("$limit", 200),
(DBObject) new BasicDBObject("$project", new BasicDBObject("_id", 0)
.append("url", "$views.url")
.append("date", "$views.date"))
)).results();
// Print for demo
for (DBObject dbObject : output)
{
System.out.println(dbObject);
}
क्वेरी रूपांतरण तर्क: इस लिंक के लिए धन्यवाद