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

Javaドライバーを使用したMongoDBアグリゲーション

    最終的に解決策が見つかりました。元のリクエストと同じ結果が得られました。

    Mongoドライバー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);
    }
    

    static import:
    import static com.mongodb.client.model.Aggregates.*;を使用すると、読みやすくすることができます。 。
    完全な例については、kouliniの回答を参照してください。

    Mongoドライバー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);
    }
    

    クエリ変換ロジック: このリンクに感謝



    1. PHPスクリプトからRedisに接続しようとしたときに許可が拒否されたトラブルシューティング

    2. mongoグループはフィールドを保持する方法を照会します

    3. 既存のMongoDBエントリからキー/値を削除する

    4. Meteor:クライアントからMongoコレクションへのファイルのアップロードvsファイルシステムvs GridFS