Hi Reji,
actually you're providing a String type to your body, and Mongo does not
treat the "_id" field as a String but as an ObjectId type.

Please, change your setBody method to:

.setBody(constant(new ObjectId("5ea1c4ae0911be2db0008909")))

and everything should work as expected.

Cheers,
Pasquale.

On Mon, Apr 27, 2020 at 4:07 PM Reji Mathews <reji.math...@huawei.com>
wrote:

> Hello Camel Community
>
> I am trying to use camel to query records based on mongo id with operation
> "findById". Following is the route snippet
>
> public void configure() throws Exception {
>     from("jetty:http://0.0.0.0:8081/mongo?httpMethodRestrict=GET";)
>             .setBody(constant("5ea1c4ae0911be2db0008909"))
>
> .to("mongodb:mongoClient?database=connectortesting&operation=findById&collection=requests")
>             .log("Mongo response ${body}")
>             .end();
> }
>
> I have following records in my test db
>
> > db.requests.find({});
> { "_id" : ObjectId("5ea1c4ae0911be2db0008909"), "name" : "mark", "age" :
> 40, "address" : "toronto, canada", "work" : { "company" : "mycompany",
> "company_phone" : "+1437447xxxx" } }
> { "_id" : ObjectId("5ea1f4df5e8c086e869250e3"), "name" : "mark", "age" :
> 43, "address" : "toronto, canada", "work" : { "company" : " mycompany ",
> "company_phone" : "+143744xxxxx" } }
> { "_id" : ObjectId("5ea1f4f05e8c086e869250e4"), "name" : "hima", "age" :
> 65, "address" : "toronto, canada", "work" : { "company" : " mycompany ",
> "company_phone" : "+143744xxxxx" } }
> { "_id" : ObjectId("5ea1f4f75e8c086e869250e5"), "name" : "paul", "age" :
> 45, "address" : "toronto, canada", "work" : { "company" : " mycompany ",
> "company_phone" : "+1437xxxxxxxx" } }
> { "_id" : ObjectId("5ea1f4fd5e8c086e869250e6"), "name" : "tim", "age" :
> 34, "address" : "toronto, canada", "work" : { "company" : " mycompany ",
> "company_phone" : "+143744xxxxxx" } }
>
> I was expecting mongodb component to return 1st record where mongoId
> matches "_id" but I get an empty result set. Am I doing something different
> than expected here?
>
> MongoDB documentation says "This operation retrieves only one element from
> the collection whose _id field matches the content of the IN message body"
> . Hence ideally, this should return first record
>
> PS:  I am using camel version 2.24.0
>
> Cheers
>
>

Reply via email to