Как использовать агрегирование в драйвере Mongo db Java с $ match и $ in?

1

Как преобразовать ниже запрос в код Java для драйвера Mongo Java?

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

Моя функция не работает:

DBObject match = new BasicDBObject('$match', new BasicDBObject("name", names));
Теги:
mongodb-query

2 ответа

1
Лучший ответ

Оператор $in принимает и массив или список аргументов, поэтому в любом случае будет выполнен список. Но вам нужно сформировать соответствующий BSON. Отступы вашего кода помогают визуализировать:

    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)
        )
    );
  • 0
    Привет, Нил, спасибо!
0

Согласно документации агрегирования, ваш запрос должен выглядеть так:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню