MongoDB — это документально-ориентированная система баз данных NoSQL с открытым исходным кодом, написанная на C ++. Вы можете прочитать больше о MongoDB здесь .
1. Установка MangoDB.
2. Запуск MongoDB
3. Запуск оболочки MongoDB
Монго [ip_address]: [порт]
Например: Монго localhost: 4000
4. Давайте сначала создадим базу данных.
В оболочке MangoDB введите следующее …
|
1
|
> use library |
Выше предполагается создать базу данных под названием «библиотека».
Теперь, чтобы увидеть, была ли создана ваша база данных, просто наберите следующее — что должно перечислить все базы данных.
|
1
|
> show dbs; |
5. Вставка данных в MongoDB.
Давайте сначала создадим две книги со следующими командами.
|
1
2
|
> book1 = {name : "Understanding JAVA", pages : 100}> book2 = {name : "Understanding JSON", pages : 200} |
Теперь давайте вставим эти две книги в коллекцию под названием books.
|
1
2
|
> db.books.save(book1)> db.books.save(book2) |
Приведенные выше два утверждения создадут коллекцию под названием books в библиотеке базы данных. Следующее утверждение перечислит две книги, которые мы только что сохранили.
|
1
2
3
4
|
> db.books.find();{ "_id" : ObjectId("4f365b1ed6d9d6de7c7ae4b1"), "name" : "Understanding JAVA", "pages" : 100 }{ "_id" : ObjectId("4f365b28d6d9d6de7c7ae4b2"), "name" : "Understanding JSON", "pages" : 200 } |
Давайте добавим еще несколько записей.
|
1
2
3
4
5
6
|
> book = {name : "Understanding XML", pages : 300}> db.books.save(book)> book = {name : "Understanding Web Services", pages : 400}> db.books.save(book)> book = {name : "Understanding Axis2", pages : 150}> db.books.save(book) |
6. Написание функции карты
Давайте обработаем эту библиотечную коллекцию таким образом, что нам нужно найти количество книг, у которых страницы меньше 250 страниц и больше.
|
1
2
3
4
5
6
7
8
|
> var map = function() {var category;if ( this.pages >= 250 ) category = 'Big Books';elsecategory = "Small Books";emit(category, {name: this.name});}; |
Здесь коллекция, созданная функцией Map, будет иметь коллекцию следующих членов.
|
1
2
|
{"Big Books",[{name: "Understanding XML"}, {name : "Understanding Web Services"}]);{"Small Books",[{name: "Understanding JAVA"}, {name : "Understanding JSON"},{name: "Understanding Axis2"}]); |
7. Написание функции уменьшения.
|
1
2
3
4
5
6
7
|
> var reduce = function(key, values) {var sum = 0;values.forEach(function(doc) {sum += 1;});return {books: sum};}; |
8. Запуск MapReduce против коллекции книг.
|
1
2
3
4
5
|
> var count = db.books.mapReduce(map, reduce, {out: "book_results"});> db[count.result].find(){ "_id" : "Big Books", "value" : { "books" : 2 } }{ "_id" : "Small Books", "value" : { "books" : 3 } } |
Выше сказано, у нас есть 2 большие книги и 3 маленькие книги.
Все, что было сделано выше с использованием оболочки MongoDB, можно сделать и с Java. Ниже приводится Java-клиент для него. Вы можете скачать необходимую зависимую банку отсюда .
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
import com.mongodb.BasicDBObject;import com.mongodb.DB;import com.mongodb.DBCollection;import com.mongodb.DBObject;import com.mongodb.MapReduceCommand;import com.mongodb.MapReduceOutput;import com.mongodb.Mongo;public class MongoClient { /** * @param args */ public static void main(String[] args) { Mongo mongo; try { mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("library"); DBCollection books = db.getCollection("books"); BasicDBObject book = new BasicDBObject(); book.put("name", "Understanding JAVA"); book.put("pages", 100); books.insert(book); book = new BasicDBObject(); book.put("name", "Understanding JSON"); book.put("pages", 200); books.insert(book); book = new BasicDBObject(); book.put("name", "Understanding XML"); book.put("pages", 300); books.insert(book); book = new BasicDBObject(); book.put("name", "Understanding Web Services"); book.put("pages", 400); books.insert(book); book = new BasicDBObject(); book.put("name", "Understanding Axis2"); book.put("pages", 150); books.insert(book); String map = "function() { "+ "var category; " + "if ( this.pages >= 250 ) "+ "category = 'Big Books'; " + "else " + "category = 'Small Books'; "+ "emit(category, {name: this.name});}"; String reduce = "function(key, values) { " + "var sum = 0; " + "values.forEach(function(doc) { " + "sum += 1; "+ "}); " + "return {books: sum};} "; MapReduceCommand cmd = new MapReduceCommand(books, map, reduce, null, MapReduceCommand.OutputType.INLINE, null); MapReduceOutput out = books.mapReduce(cmd); for (DBObject o : out.results()) { System.out.println(o.toString()); } } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } }} |
Ссылка: MapReduce с MongoDB от нашего партнера JCG Прабата Сиривардены в блоге Facile Login .