sql >> Databasteknik >  >> NoSQL >> MongoDB

MongoDB-aggregation med Java-drivrutin

Äntligen hittat lösningen, jag får samma resultat som med den ursprungliga begäran.

Mongo Driver 3 :

Sammanlagt dokument

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);
}

Du kan göra det mer läsbart med statisk import :
import static com.mongodb.client.model.Aggregates.*; .
Se koulini-svaret för ett komplett exempel.

Mongo Driver 2 :

Sammanlagt dokument

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);
}

Frågekonverteringslogik: Tack vare den här länken



  1. Använda jedis hur man skriver till en specifik plats/nod i redis-kluster

  2. Hur konfigurerar man AppArmor för MongoDB Replica Sets?

  3. Partiella index i mongodb / mongoose

  4. Hur man slår samman arrayfält i dokument i Mongo-aggregation