I'd like to count the number of items in an array of JSON items that match some conditions. My array look like this:
array = [{
name: 'Bob',
age: 24
},
....,
{
name: 'Mary',
age: 23
}]
Rather than looping through the whole array I am trying to get an expression as simple an as elegant as my database request:
db.myCollection.find({ age: 23 }).count()
Is there any best practice? I was thinking of using the underscore library but I couldnt find what I am looking for.
Many thanks for your help.
JsonArray::size() gets the number of elements in the array pointed by the JsonArray . If the JsonArray is null, this function returns 0 . Internally, this function walks a linked-list to count the elements, so its time complexity is O(n).
No, you'll not be able to do computations inside json. The data would need to be mutated elsewhere and then sent.
JSON defines only two data structures: objects and arrays. An object is a set of name-value pairs, and an array is a list of values. JSON defines seven value types: string, number, object, array, true, false, and null.
Well, you can do this without any 3rd party library and also without looping:
array.filter(function(value) { return value.age === 23 }).length;
And with ES6 it even becomes more terse
array.filter(value => value.age === 23).length;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With