JSONata and arrays in root of msg

I wonder if you are using a function node to build the "root array".

If you return an array of objects (like the one you shared in the OP) in a function node then the function node will understand that you are using multiple outputs and will send one object for each output. You will get only the first object if there is no second output configured in the function node.

Perhaps a flow can explain better. Try this code inside a function node with only one output and then add a second output and trigger the flow again. Edit: add a debug node to each output of the function node to visualize how it works.

let newmsg = [{"a" : 1}, {"b" :2}];
return newmsg;