вторник, 4 февраля 2014 г.

MongoDB. Homework week 2.

Homework 2.1
Итак, скачиваем предложный файл тут, импортируем его вот этой командой в наш mongo:
mongoimport -d students -c grades < grades.js
 После чего нам надо найти студента у которого самый маленький score среди тех, кто набрал больше 65 баллов. Пишем:
db.grades.find({type:"exam",score:{"$gte:65}}).sort({"score":1}).limit(3)
в итоге первая строчка с "_id" = 22.
Ответ: 22.

Homework 2.2
Наконец программирование, наконец Java!
Нам предлагают файл, скачанный тут изменить так, чтобы наименьшее поле с homework для каждого студента была удалено. Сделать это посредством Java, итак, приступим. Вот мой вариант решения:

понедельник, 3 февраля 2014 г.

CRUD operation in Java Driver.

Теперь рассмотрим эти же операции для Java:
insert(DBObject)
 Для добавления в коллекцию нужно создать объект BasicDBObject:
BasicDBObject doc = new BasicDBObject();
И, собственно добавление:
doc.put("username", "jyemin");
doc.put("birthDate", new Date(2345));
doc.put("programmer", true);
doc.put("age", 8);
doc.put("language", Arrays.asList("Java","C++"));
doc.put("address", new BasicDBObject("street", "20 Main").append("town","West").append("zip","56789"));

Quiz: Java Driver: Representing Documents

CRUD operation. 4 часть, надеюсь последняя.

Эту часть начнем с операциями над массивом, для начала создадим документ:
db.array.insert({_id:0, a:[1,2,3,4]})
Для изменения элемента используем функцию:
db.array.update({_id:0},{$set:{"a.2":5}})
после использования функции db.array.findOne():
{_id:0, a:[1,2,5,4]}
Для добавления нового элемента:
db.array.update({_id:0},{$push:{a:5}})
findOne: {_id:0, a:[1,2,5,4,6]}
Удаление элемента с конца:
db.array.update({_id:0},{$pop:{a:1}})
findOne: {_id:0, a:[1,2,5,4]}
Удаление элемента с начала:
db.array.update({_id:0},{$pop:{a:-1}})
findOne: {_id:0, a:[2,5,4]}
Добавление нескольких элементов в конец:
db.array.update({_id:0},{$pushAll:[7,8,9]})
findOne: {_id:0, a:[2,5,4,7,8,9]}
Удаление конкретного значения из массива:
db.array.update({_id:0},{$pull:5})
findOne: {_id:0, a:[2,4,7,8,9]}
Удаление нескольких элементов:
db.array.update({_id:0},{$pullAll:{a:[2,4,8]})
findOne: {_id:0, a:[7,9]}
Добавление в конец:
db.array.update({_id:0},{$addToSet{a:5})
findOne: {_id:0, a:[7,9,5]}
При повторе последнего действия несколько раз ничего не произойдет, добавляет значение только единожды!

воскресенье, 2 февраля 2014 г.

CRUD operation. Часть 3

Разберем немного действий с курсором.
db.people.find()
Как мы знаем, с помощью этой функции выводятся все документы существующие в people коллекции. Присвоим переменной cur значение этой функции:
 cur = db.people.find()
Теперь мы можем выполнять действия с курсором, например:
cur.hasNext() - проверяет, есть ли следующий элемент и возвращает true/false
cur.next() - возвращает текущий элемент и передвигает курсор на одно значение вперед.
cur.limit(5) - лимит на количество выводимых документов
cur.sort({name:-1}) - сортировка по name полю, по возрастанию
cur.sort({name:-1}).limit(3) - сортировка +  лимит
cur.sort({name:-1}).limit(3).skip(2) - сортировка +лимит, вывод начиная с 3 документа

Quiz: Querying, Cursors

Recall the documents in the scores collection:
{
 "_id" : ObjectId("50844162cb4cf4564b4694f8"),
 "student" : 0,
 "type" : "exam",
 "score" : 75
}
Write a query that retrieves exam documents, sorted by score in descending order, skipping the first 50 and showing only the next 20.

CRUD operation. Часть 2.

Продолжение темы CRUD в MongoDB. Постараюсь писать более форматировано)

Использование $or:
db.people.find({$or:[{name:{$regex:"e$"}},{age:{$exists:true}}]});
Происходит выборка документов, в которых поле name содержит "e" в конце строки или содержит поле age.

Quiz: Using $or

How would you find all documents in the scores collection where the score is less than 50 or greater than 90?
db.scores.find({$or:[{score:{$lt:50}},{score:{$gt:90}}]})

Использование $and:
db.people.find({$and:[{name:{$regex:"e$"}},{age:{$exists:true}}]});
Происходит выборка документов, в которых поле name содержит "e" в конце строки и присутствует поле age.

Quiz: Using $and

CRUD operation. Часть 1.

 CRUD операции(Create, Read, Update, Delete) - тут думаю не нужно вдаваться в подробности, скажу только то, что они имеют такую же смысловую нагрузку как и SQL базах данных, а по их названию можно догадаться, для чего они нужны. Лучше разберем их синтаксис.
Я уже вскользь затрагивал такие команды, как use db, show collections, db.collection.find(), db.collection.findOne(), сейчас  чуть подробнее разберу, для чего они нужны.

Итак:
mongod - запускаем наш MongoDB сервер.
mongo - наша оболочка, через которую мы будем производить все операции на начальном этапе.
use db - вместо db указываем любую базу данных с которой будем работать
show collections - показывает все существующие коллекции в нашей базе данных
db - показывает, в какой базе данных мы находимся
Еще можно сделать вот так:

суббота, 1 февраля 2014 г.

MongoDB. Homework week 1.

Вот мы и добрались до домашнего задания первой недели!
Homework 1.1
Нам предлагают установить mongoDB, скачать архив с файлами, распаковать и использовать mongorestore. После успешного выполнения этих действий, пишем:
mongo
use m101
db.hw1.findOne()
Барабанная дробь!