javamongodbmongodb-queryjongo

Too many parameters error on the following $in query


I'm using jongo API - org.jongo.MongoCollection is the class.

I have list of object ids and converted the same as ObjectId[] and trying to query as follows

collection.find("{_id:{$in:#}}", ids).as(Employee.class);

The query throws the exception - "java.lang.IllegalArgumentException: Too      
many parameters passed to query: {"_id":{"$in":#}}"

The query doesn't work as specified in the URL In Jongo, how to find multiple documents from Mongodb by a list of IDs

Any suggestion on how to resolve?

Thanks.


Solution

  • Try it with a List as shown on the docs:

    List<String> ages = Lists.newArrayList(22, 63);
    friends.find("{age: {$in:#}}", ages); //→ will produce {age: {$in:[22,63]}}
    

    For example the following snippet I crafted quick & dirty right now worked for me (I use older verbose syntax as I am currently on such a system ...)

    List<ObjectId> ids = new ArrayList<ObjectId>();
    ids.add(new ObjectId("57bc7ec7b8283b457ae4ef01"));
    ids.add(new ObjectId("57bc7ec7b8283b457ae4ef02"));
    ids.add(new ObjectId("57bc7ec7b8283b457ae4ef03"));
    int count = friends.find("{ _id: { $in: # } }", ids).as(Friend.class).count();