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

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 - показывает, в какой базе данных мы находимся
Еще можно сделать вот так:

doc = {"name":"Smith","age":30,"profession":"hacker"}
db.people.insert(doc) - вставляем в нашу коллекцию документ doc, если такой уже существует то mongo ругается
db.people.save(doc) - вставляем в коллекцию, если не существует, иначе обновляем
db.people.update(doc) - обновляем документ
db.people.findOne() - выводит документ, на который указывает курсор
db.people.findOne().pretty() - то же самое только в другом виде
db.people.findOne({"name":"Jones"}) - выводит документ, в котором поле name соответствует значению Jones
db.people.findOne({"name":"Jones"},{"name":true,"_id":false})-выводит документ, в котором поле name соответствует значению Jones, отображаю только поле name
db.scores.find({"score":50,"type":"essay"},{"student":true,"_id":false}) -выводит все документы, со значением score = 50 и type = essay, отображает только поле student
Для последующих действий нам потребуется база с 1000 записей, мы помним, что mongo поддерживает синтаксис JavaScript, поэтому запишем:
for(i=0;i<1000;i++){names=["exam","essay","quiz"];for(j=0;j<3;j++){db.scores.insert({"student":i,"type":names[j],score:Math.round(Math.random()*100)});}}
db.scores.find({"score":{$gte:95,$lt:98},"type":"essay"}) - вывод всех документов, где для типа essay параметр scare находится в пределах [95;98)
$gt - больше
$gte - больше или равно
$lt - меньше
$lte - меньше или равно
Эти функции можно применять и к строкам.
db.scores.find({"profession":{$exists:true}}) - вывод всех документов из базы scores, имеющих поле profession
db.scores.find({"profession":{$exists:false}}) - вывод всех документов из базы scores, не имеющих поле  profession
db.scores.find({name:{$type:2}}) - вывод всех документов из базы scores, где name - строковый тип
db.scores.find({name:{$regex:"a"}}) - вывод всех документов из базы scores, где в поле name имеется буква "a"
$regex : "a" - в любом месте
$regex : "^a" - в начале строки
$regex : "a$" - в конце строки
Write a query that retrieves documents from a users collection where the name has a "q" in it, and the document has an email field.

db.users.find({name:{$regex:"q"},email:{$exists:true}});

Комментариев нет:

Отправить комментарий