Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MongoDB - The argument to $size must be an Array, but was of type: EOO / missing

Trying to create a MongoDB data source with icCube. The idea is to return the size of an array as a new field. Something like :

$project: {   "people": 1,   "Count myFieldArray" : {$size : "$myFieldArray" } } 

But I'm getting for some records the following error :

The argument to $size must be an Array, but was of type: EOO 

Is there a way that size is 0 if the field is empty or not an array (getting rid of the error) ?

like image 957
ic3 Avatar asked Jun 13 '14 08:06

ic3


Video Answer


1 Answers

You can use the $ifNull operator here. It seems the field is either not an array or not present by the given error:

{ "$project": {     "people": 1,     "Count": {          "$size": { "$ifNull": [ "$myFieldArray", [] ] }     } }} 

Also you might want to check for the $type in your $match in case these do exist but are not an array.

like image 51
Neil Lunn Avatar answered Sep 23 '22 09:09

Neil Lunn