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' ; else category = "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 .