简体   繁体   中英

How to use aggregation in Mongo db Java driver with $match and $in?

How to convert below query into Java code for Mongo Java driver?

db.post.aggregate(
  [
    { $match : {"name" :{'$in': ["michael", "jordan"] } }},
    { $group : { _id : "$game.id" , count : { $sum : 1 } } }
    ]
)

My function is not working:

DBObject match = new BasicDBObject('$match', new BasicDBObject("name", names));

The $in operator takes and array or list of arguments, so any list will basically do. But you need to form the corresponding BSON. Indenting your code helps to visualize:

    BasicDBList inArgs = new BasicDBList();
    inArgs.add("michael");
    inArgs.add("jordan");

    DBObject match = new BasicDBObject("$match",
        new BasicDBObject("name",
           new BasicDBObject("$in", inArgs )
        )
    );

    DBObject group = new BasicDBObject("$group",
        new BasicDBObject("_id","$game.id").append(
            "count", new BasicDBObject("$sum",1)
        )
    );

根据聚合文档 ,您的查询应类似于:

DBObject match = new BasicDBObject('$match', new BasicDBObject('name', new BasicDBObject('$in', names)));

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM