You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Site Register <si...@ymail.com.INVALID> on 2020/10/01 12:20:11 UTC

Mongodb Batch Insert Using Aggregate Not Working

Hi All,
It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
from(fromFile)
 .split().tokenize("\n",1)
 .aggregate(constant(true), new ArrayListAggregationStrategy())
 .completionSize(1000)
 .completionTimeout(500)
 .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");

Thank you,

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

I created a ticket
https://issues.apache.org/jira/browse/CAMEL-15646

On Mon, Oct 5, 2020 at 7:01 PM Site Register
<si...@ymail.com.invalid> wrote:
>
>  Can somebody help to create a jira for this because I don't have the permission?
> Please use below codes to reproduce.
>
> @Named("ConvertType")
> @Log4j2
> public class ConvertType implements Processor {  private static final Logger logger = LoggerFactory.getLogger(ConvertType.class);  @Override
>  public void process(Exchange exchange) {
>  Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");
>  a.append("MyId", 1).toJson();
>  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");
>  b.append("MyId", 2).toJson();
>  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");
>  c.append("MyId", 3).toJson();
>  List<Document> taxGroupList = new ArrayList<Document>();
>  taxGroupList.add(a);
>  taxGroupList.add(b);
>  taxGroupList.add(c);
>  exchange.getIn().setBody(taxGroupList);
>   // From MongoDbProducer.java#L428
>  // https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L428
>  Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());
>  if (insert == null)
>  logger.info(Document.class.getTypeName() + " mismatched with " + exchange.getIn().getBody().getClass().getTypeName());
>  else
>  logger.info(Document.class.getTypeName() + " matched with " + exchange.getIn().getBody().getClass().getTypeName());
>  } }
>
> from(fromKafka)    .process("ConvertType");
>     On Monday, October 5, 2020, 03:30:38 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:
>
>  On Sun, Oct 4, 2020 at 9:02 PM Site Register
> <si...@ymail.com.invalid> wrote:
> >
> >  I went through Camel MongoDB source code (https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L424)
> > I found on line 428, it returns not null for trying to convert List<Document> which caused boolean singleInsert always equals to true.
> > // Always return the first document of the list
> > Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());
> >
> >
> > Is this a bug?
>
> Ah yeah if it just grabs first element from the list. Can you create a
> JIRA. You are also welcome to work on a PR with a fix
>
> > Thank you,    On Saturday, October 3, 2020, 08:29:38 PM EDT, Site Register <si...@ymail.com> wrote:
> >
> >  Thank you Claus,
> > I went to https://github.com/apache/camel/blob/master/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java and simplified my codes but still got the same results. We had a project and I tried to convince to leverage Camel features. Any helps will be very appreciated.
> >
> > Thank you,
> >  /* My Sample Codes */
> >  from(fromKafka)
> >  .log("Starting...")
> >  .process("CreateDocumentList")
> >  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert")
> >  .log("I am done");
> >
> >
> > @Named("CreateDocumentList")
> > public class CreateDocumentList implements Processor {
> > public void process(Exchange exchange) {
> >  Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");  a.append("MyId", 1).toJson();  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");  b.append("MyId", 2).toJson();  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");  c.append("MyId", 3).toJson();  ArrayList<Document> taxGroupList = new ArrayList<Document>();  taxGroupList.add(a);  taxGroupList.add(b);  taxGroupList.add(c);  exchange.getIn().setBody(taxGroupList); }
> > }
> > Results: According to Camel MongoDb document, I expect to see 3 rows being inserted but I can only see one row.
> >
> > /* MongoDb document: https://camel.apache.org/components/latest/mongodb-component.html#_createupdate_operations */
> >
> > For multiple insert, the endpoint will expect a List, Array or Collections of objects of any type, as long as they are - or can be converted to - Document. Example:
> > from("direct:insert")
> >    .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
> >
> >
> > Results in MongoDb:
> > {    "_id" : "testInsert1",
> >    "MyId" : NumberInt(1)
> > }
> >
> >
> >
> >
> >
> >
> >    On Saturday, October 3, 2020, 03:15:28 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:
> >
> >  Hi
> >
> > It can be a good idea to look at the unit tests of the components as
> > they often cover how a functionality may be used (if tested) or at
> > least help you in the right direction.
> >
> >
> > On Sat, Oct 3, 2020 at 12:14 AM Site Register
> > <si...@ymail.com.invalid> wrote:
> > >
> > >  Hi All,
> > > According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> > > Thank you,
> > >
> > >    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
> > >
> > >  Hi All,
> > > It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> > > from(fromFile)
> > >  .split().tokenize("\n",1)
> > >  .aggregate(constant(true), new ArrayListAggregationStrategy())
> > >  .completionSize(1000)
> > >  .completionTimeout(500)
> > >  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
> > >
> > > Thank you,
> >
> >
> >
> > --
> > Claus Ibsen
> > -----------------
> > http://davsclaus.com @davsclaus
> > Camel in Action 2: https://www.manning.com/ibsen2
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Site Register <si...@ymail.com.INVALID>.
 Can somebody help to create a jira for this because I don't have the permission?
Please use below codes to reproduce.

@Named("ConvertType")
@Log4j2
public class ConvertType implements Processor {  private static final Logger logger = LoggerFactory.getLogger(ConvertType.class);  @Override
 public void process(Exchange exchange) {
 Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");
 a.append("MyId", 1).toJson();
 Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");
 b.append("MyId", 2).toJson();
 Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");
 c.append("MyId", 3).toJson();
 List<Document> taxGroupList = new ArrayList<Document>();
 taxGroupList.add(a);
 taxGroupList.add(b);
 taxGroupList.add(c);
 exchange.getIn().setBody(taxGroupList);
  // From MongoDbProducer.java#L428
 // https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L428
 Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());
 if (insert == null)
 logger.info(Document.class.getTypeName() + " mismatched with " + exchange.getIn().getBody().getClass().getTypeName());
 else
 logger.info(Document.class.getTypeName() + " matched with " + exchange.getIn().getBody().getClass().getTypeName());
 } }

from(fromKafka)    .process("ConvertType");
    On Monday, October 5, 2020, 03:30:38 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:  
 
 On Sun, Oct 4, 2020 at 9:02 PM Site Register
<si...@ymail.com.invalid> wrote:
>
>  I went through Camel MongoDB source code (https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L424)
> I found on line 428, it returns not null for trying to convert List<Document> which caused boolean singleInsert always equals to true.
> // Always return the first document of the list
> Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());
>
>
> Is this a bug?

Ah yeah if it just grabs first element from the list. Can you create a
JIRA. You are also welcome to work on a PR with a fix

> Thank you,    On Saturday, October 3, 2020, 08:29:38 PM EDT, Site Register <si...@ymail.com> wrote:
>
>  Thank you Claus,
> I went to https://github.com/apache/camel/blob/master/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java and simplified my codes but still got the same results. We had a project and I tried to convince to leverage Camel features. Any helps will be very appreciated.
>
> Thank you,
>  /* My Sample Codes */
>  from(fromKafka)
>  .log("Starting...")
>  .process("CreateDocumentList")
>  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert")
>  .log("I am done");
>
>
> @Named("CreateDocumentList")
> public class CreateDocumentList implements Processor {
> public void process(Exchange exchange) {
>  Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");  a.append("MyId", 1).toJson();  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");  b.append("MyId", 2).toJson();  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");  c.append("MyId", 3).toJson();  ArrayList<Document> taxGroupList = new ArrayList<Document>();  taxGroupList.add(a);  taxGroupList.add(b);  taxGroupList.add(c);  exchange.getIn().setBody(taxGroupList); }
> }
> Results: According to Camel MongoDb document, I expect to see 3 rows being inserted but I can only see one row.
>
> /* MongoDb document: https://camel.apache.org/components/latest/mongodb-component.html#_createupdate_operations */
>
> For multiple insert, the endpoint will expect a List, Array or Collections of objects of any type, as long as they are - or can be converted to - Document. Example:
> from("direct:insert")
>    .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
>
>
> Results in MongoDb:
> {    "_id" : "testInsert1",
>    "MyId" : NumberInt(1)
> }
>
>
>
>
>
>
>    On Saturday, October 3, 2020, 03:15:28 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:
>
>  Hi
>
> It can be a good idea to look at the unit tests of the components as
> they often cover how a functionality may be used (if tested) or at
> least help you in the right direction.
>
>
> On Sat, Oct 3, 2020 at 12:14 AM Site Register
> <si...@ymail.com.invalid> wrote:
> >
> >  Hi All,
> > According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> > Thank you,
> >
> >    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
> >
> >  Hi All,
> > It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> > from(fromFile)
> >  .split().tokenize("\n",1)
> >  .aggregate(constant(true), new ArrayListAggregationStrategy())
> >  .completionSize(1000)
> >  .completionTimeout(500)
> >  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
> >
> > Thank you,
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2  

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Claus Ibsen <cl...@gmail.com>.
On Sun, Oct 4, 2020 at 9:02 PM Site Register
<si...@ymail.com.invalid> wrote:
>
>  I went through Camel MongoDB source code (https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L424)
> I found on line 428, it returns not null for trying to convert List<Document> which caused boolean singleInsert always equals to true.
> // Always return the first document of the list
> Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());
>
>
> Is this a bug?

Ah yeah if it just grabs first element from the list. Can you create a
JIRA. You are also welcome to work on a PR with a fix

> Thank you,    On Saturday, October 3, 2020, 08:29:38 PM EDT, Site Register <si...@ymail.com> wrote:
>
>   Thank you Claus,
> I went to https://github.com/apache/camel/blob/master/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java and simplified my codes but still got the same results. We had a project and I tried to convince to leverage Camel features. Any helps will be very appreciated.
>
> Thank you,
>  /* My Sample Codes */
>  from(fromKafka)
>  .log("Starting...")
>  .process("CreateDocumentList")
>  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert")
>  .log("I am done");
>
>
> @Named("CreateDocumentList")
> public class CreateDocumentList implements Processor {
> public void process(Exchange exchange) {
>  Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");  a.append("MyId", 1).toJson();  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");  b.append("MyId", 2).toJson();  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");  c.append("MyId", 3).toJson();  ArrayList<Document> taxGroupList = new ArrayList<Document>();  taxGroupList.add(a);  taxGroupList.add(b);  taxGroupList.add(c);  exchange.getIn().setBody(taxGroupList); }
> }
> Results: According to Camel MongoDb document, I expect to see 3 rows being inserted but I can only see one row.
>
> /* MongoDb document: https://camel.apache.org/components/latest/mongodb-component.html#_createupdate_operations */
>
> For multiple insert, the endpoint will expect a List, Array or Collections of objects of any type, as long as they are - or can be converted to - Document. Example:
> from("direct:insert")
>     .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");
>
>
> Results in MongoDb:
> {     "_id" : "testInsert1",
>     "MyId" : NumberInt(1)
> }
>
>
>
>
>
>
>     On Saturday, October 3, 2020, 03:15:28 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:
>
>  Hi
>
> It can be a good idea to look at the unit tests of the components as
> they often cover how a functionality may be used (if tested) or at
> least help you in the right direction.
>
>
> On Sat, Oct 3, 2020 at 12:14 AM Site Register
> <si...@ymail.com.invalid> wrote:
> >
> >  Hi All,
> > According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> > Thank you,
> >
> >    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
> >
> >  Hi All,
> > It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> > from(fromFile)
> >  .split().tokenize("\n",1)
> >  .aggregate(constant(true), new ArrayListAggregationStrategy())
> >  .completionSize(1000)
> >  .completionTimeout(500)
> >  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
> >
> > Thank you,
>
>
>
> --
> Claus Ibsen
> -----------------
> http://davsclaus.com @davsclaus
> Camel in Action 2: https://www.manning.com/ibsen2



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Site Register <si...@ymail.com.INVALID>.
 I went through Camel MongoDB source code (https://github.com/apache/camel/blob/af7e383e9fc1d25ce9665f74d33672cc5b507952/components/camel-mongodb/src/main/java/org/apache/camel/component/mongodb/MongoDbProducer.java#L424)
I found on line 428, it returns not null for trying to convert List<Document> which caused boolean singleInsert always equals to true.
// Always return the first document of the list
Object insert = exchange.getContext().getTypeConverter().tryConvertTo(Document.class, exchange, exchange.getIn().getBody());


Is this a bug?
Thank you,    On Saturday, October 3, 2020, 08:29:38 PM EDT, Site Register <si...@ymail.com> wrote:  
 
  Thank you Claus,
I went to https://github.com/apache/camel/blob/master/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java and simplified my codes but still got the same results. We had a project and I tried to convince to leverage Camel features. Any helps will be very appreciated.

Thank you,
 /* My Sample Codes */
 from(fromKafka)
 .log("Starting...")
 .process("CreateDocumentList")
 .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert")
 .log("I am done");


@Named("CreateDocumentList")
public class CreateDocumentList implements Processor {
public void process(Exchange exchange) {
 Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");  a.append("MyId", 1).toJson();  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");  b.append("MyId", 2).toJson();  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");  c.append("MyId", 3).toJson();  ArrayList<Document> taxGroupList = new ArrayList<Document>();  taxGroupList.add(a);  taxGroupList.add(b);  taxGroupList.add(c);  exchange.getIn().setBody(taxGroupList); }
}
Results: According to Camel MongoDb document, I expect to see 3 rows being inserted but I can only see one row.

/* MongoDb document: https://camel.apache.org/components/latest/mongodb-component.html#_createupdate_operations */

For multiple insert, the endpoint will expect a List, Array or Collections of objects of any type, as long as they are - or can be converted to - Document. Example:
from("direct:insert")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");


Results in MongoDb:
{     "_id" : "testInsert1", 
    "MyId" : NumberInt(1)
}






    On Saturday, October 3, 2020, 03:15:28 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:  
 
 Hi

It can be a good idea to look at the unit tests of the components as
they often cover how a functionality may be used (if tested) or at
least help you in the right direction.


On Sat, Oct 3, 2020 at 12:14 AM Site Register
<si...@ymail.com.invalid> wrote:
>
>  Hi All,
> According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> Thank you,
>
>    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
>
>  Hi All,
> It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> from(fromFile)
>  .split().tokenize("\n",1)
>  .aggregate(constant(true), new ArrayListAggregationStrategy())
>  .completionSize(1000)
>  .completionTimeout(500)
>  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
>
> Thank you,



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2    

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Site Register <si...@ymail.com.INVALID>.
 Thank you Claus,
I went to https://github.com/apache/camel/blob/master/components/camel-mongodb/src/test/java/org/apache/camel/component/mongodb/MongoDbOperationsTest.java and simplified my codes but still got the same results. We had a project and I tried to convince to leverage Camel features. Any helps will be very appreciated.

Thank you,
 /* My Sample Codes */
 from(fromKafka)
 .log("Starting...")
 .process("CreateDocumentList")
 .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert")
 .log("I am done");


@Named("CreateDocumentList")
public class CreateDocumentList implements Processor {
public void process(Exchange exchange) {
 Document a = new Document(MongoDbConstants.MONGO_ID, "testInsert1");  a.append("MyId", 1).toJson();  Document b = new Document(MongoDbConstants.MONGO_ID, "testInsert2");  b.append("MyId", 2).toJson();  Document c = new Document(MongoDbConstants.MONGO_ID, "testInsert3");  c.append("MyId", 3).toJson();  ArrayList<Document> taxGroupList = new ArrayList<Document>();  taxGroupList.add(a);  taxGroupList.add(b);  taxGroupList.add(c);  exchange.getIn().setBody(taxGroupList); }
}
Results: According to Camel MongoDb document, I expect to see 3 rows being inserted but I can only see one row.

/* MongoDb document: https://camel.apache.org/components/latest/mongodb-component.html#_createupdate_operations */

For multiple insert, the endpoint will expect a List, Array or Collections of objects of any type, as long as they are - or can be converted to - Document. Example:
from("direct:insert")
    .to("mongodb:myDb?database=flights&collection=tickets&operation=insert");


Results in MongoDb:
{     "_id" : "testInsert1", 
    "MyId" : NumberInt(1)
}






    On Saturday, October 3, 2020, 03:15:28 AM EDT, Claus Ibsen <cl...@gmail.com> wrote:  
 
 Hi

It can be a good idea to look at the unit tests of the components as
they often cover how a functionality may be used (if tested) or at
least help you in the right direction.


On Sat, Oct 3, 2020 at 12:14 AM Site Register
<si...@ymail.com.invalid> wrote:
>
>  Hi All,
> According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> Thank you,
>
>    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
>
>  Hi All,
> It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> from(fromFile)
>  .split().tokenize("\n",1)
>  .aggregate(constant(true), new ArrayListAggregationStrategy())
>  .completionSize(1000)
>  .completionTimeout(500)
>  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
>
> Thank you,



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2  

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

It can be a good idea to look at the unit tests of the components as
they often cover how a functionality may be used (if tested) or at
least help you in the right direction.


On Sat, Oct 3, 2020 at 12:14 AM Site Register
<si...@ymail.com.invalid> wrote:
>
>  Hi All,
> According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
> Thank you,
>
>     On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:
>
>  Hi All,
> It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
> from(fromFile)
>  .split().tokenize("\n",1)
>  .aggregate(constant(true), new ArrayListAggregationStrategy())
>  .completionSize(1000)
>  .completionTimeout(500)
>  .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");
>
> Thank you,



-- 
Claus Ibsen
-----------------
http://davsclaus.com @davsclaus
Camel in Action 2: https://www.manning.com/ibsen2

Re: Mongodb Batch Insert Using Aggregate Not Working

Posted by Site Register <si...@ymail.com.INVALID>.
 Hi All,
According to the document MongoDB :: Apache Camel , it supposes to batch insert into mongodb. However I found it only inserted the first record of the batch. I also added a process right before mongodb insert and the message having a list of the document. Very appreciated if you can help.
Thank you,

    On Thursday, October 1, 2020, 08:22:23 AM EDT, Site Register <si...@ymail.com.invalid> wrote:  
 
 Hi All,
It tried to batch insert by leveraging aggregate. Somehow it only inserted one record for each batch. Very appreciated if you can help.
from(fromFile)
 .split().tokenize("\n",1)
 .aggregate(constant(true), new ArrayListAggregationStrategy())
 .completionSize(1000)
 .completionTimeout(500)
 .to("mongodb:mongoBean?database=databaseName&collection=collectionName&operation=insert");

Thank you,