Skip to content

Instantly share code, notes, and snippets.

@TylerBrock
Created September 22, 2014 20:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save TylerBrock/8c4b61be213c4181e214 to your computer and use it in GitHub Desktop.
Save TylerBrock/8c4b61be213c4181e214 to your computer and use it in GitHub Desktop.
Aggregation Framework Example
/* Copyright 2014 10gen Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#include <iostream>
#include <memory>
#include "mongo/client/dbclient.h"
using namespace mongo;
int main(int argc, char* argv[]) {
const char *port = "27017";
if ( argc != 1 ) {
if ( argc != 3 ) {
std::cout << "need to pass port as second param" << std::endl;
return EXIT_FAILURE;
}
port = argv[ 2 ];
}
Status status = client::initialize();
if (status.isOK()) {
DBClientConnection conn;
conn.connect(std::string("localhost:").append(port));
conn.dropCollection("test.test");
conn.insert("test.test", BSON("x" << 0));
conn.insert("test.test", BSON("x" << 1));
conn.insert("test.test", BSON("x" << 1));
conn.insert("test.test", BSON("x" << 2));
conn.insert("test.test", BSON("x" << 2));
conn.insert("test.test", BSON("x" << 2));
std::auto_ptr<DBClientCursor> cursor = conn.aggregate("test.test",
BSON_ARRAY(
BSON("$match" << BSON("x" << GT << 0)) <<
BSON("$group" << BSON("_id" << "$x" << "count" << BSON("$sum" << 1)))
)
);
std::cout << "------- AGGREGATION -------" << std::endl;
while (cursor->more()) {
std::cout << cursor->next() << std::endl;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment