IBM Cloudant Aggregated Query
IBM Cloudant is a Distributed database that can store and process large-scale data in a cloud environment. It supports aggregate queries and uses the MapReduce function to generate results from different data views.
The following are several common aggregation queries in Cloudant:
1. MapReduce:
-Table structure and data examples:
Assuming there is a collection of documents with name and age fields, as follows:
{
"_id": "1",
"name": "John",
"age": 25
},
{
"_id": "2",
"name": "Alice",
"age": 30
},
{
"_id": "3",
"name": "Bob",
"age": 27
}
-Query example:
Write Map and Reduce functions to calculate the number of people in different age groups.
//Map function
function (doc) {
emit(doc.age, 1);
}
//Reduce function
function (keys, values, rereduce) {
return sum(values);
}
After executing the query, a result grouped by different age groups will be returned, such as:
{
"25": 1,
"27": 1,
"30": 1
}
2. Mango query:
Cloudant also supports Mango Query language, which provides a structured query syntax similar to SQL for querying and filtering document collections. Mango queries support various aggregation functions, such as $sum, $avg, $max, $min, etc.
-Table structure and data example: Same as the above example.
-Query example: Calculate the average age of all people.
//Mango Query
{
"selector": {
"age": {
"$gt": 0
}
},
"fields": ["name", "age"],
"aggregator": [
{"$group": {
"_id": null,
"averageAge": {"$avg": "$age"}
}}
]
}
After executing the query, a result containing the average age will be returned, such as:
{
"docs": [
{
"averageAge": 27.333333333333332,
"_id": null
}
],
"bookmark": "g1AAA...",
"execution_stats": {
...
}
}
3. Cloudant Query:
Cloudant Query is a simplified method of writing queries using JavaScript. It provides flexible query syntax and can be optimized using MapReduce for queries.
-Table structure and data example: Same as the above example.
-Query example: Calculate the number of people in different age groups.
// Cloudant Query
{
"selector": {
"age": {
"$gt": 0
}
},
"fields": ["age"],
"reduce": "_count",
"group": "age"
}
After executing the query, a result grouped by different age groups will be returned, such as:
{
"rows": [
{
"key": 25,
"value": 1
},
{
"key": 27,
"value": 1
},
{
"key": 30,
"value": 1
}
],
"total_rows": 3,
"bookmark": "g1AAA...",
"execution_stats": {
...
}
}
The above are some examples of aggregation queries supported in IBM Cloudant. Different Query language can be used to perform aggregation operations according to specific business requirements.