Статьи

Основные операции MongoDB


Как я упоминал в одной из моих предыдущих
статей, целью которых является повышение осведомленности о концепции NoSQL и внедрение популярного NoSQL-решения MongoDB, документация MongoDB предоставляет достаточную информацию о
том, как настроить MongoDB на платформе (Linux, Mac OS X, Windows ) ты используешь.

Если вы успешно завершили установку, мы можем перейти от теории к практике. Теперь мы можем создавать наши первые записи, выполняя основные операции MongoDB (
операции CRUD ).

Приставка

MongoDB создается консольным приложением, которое обладает всеми навыками управления. Поскольку MongoDB не имеет визуального инструмента для управления,
для этой цели существуют
сторонние решения

Прежде всего, нам нужно запустить
процесс-демон для управления консолью.  

hakdogan:~ hakdogan$ mongod

После запуска оболочки, которая будет обрабатывать запросы данных в фоновом режиме для MongoDB с помощью приведенной выше команды, мы должны запустить
оболочку mongo JavaScript на новом экране консоли, который был разработан для системных администраторов, чтобы выполнять запросы, crud и другие операции с базами данных. 

hakdogan:~ hakdogan$ mongo

Чтобы получить справку по команде help на этом этапе, новичкам будет полезно посмотреть, какая команда выполняет какие операции.  

> help
	db.help()                    help on db methods
	db.mycoll.help()             help on collection methods
	sh.help()                    sharding helpers
	rs.help()                    replica set helpers
	help admin                   administrative help
	help connect                 connecting to a db help
	help keys                    key shortcuts
	help misc                    misc things to know
	help mr                      mapreduce

	show dbs                     show database names
	show collections             show collections in current database
	show users                   show users in current database
	show profile                 show most recent system.profile entries with time >= 1ms
	show logs                    show the accessible logger names
	show log [name]              prints out the last segment of log in memory, 'global' is default
	use db_name                  set current database
	db.foo.find()                list objects in collection foo
	db.foo.find( { a : 1 } )     list objects in foo where a == 1
	it                           result of the last line evaluated; use to further iterate
	DBQuery.shellBatchSize = x   set default number of items to display on shell
	exit                         quit the mongo shell

Во-первых, давайте посмотрим на список существующих баз данных, который поставляется с установкой. 

> show dbs
local	0.078125GB

Давайте теперь определим сценарий использования, а затем создадим базу данных, в которой будут размещаться коллекции, в которых мы будем выполнять операции crud. 

сценарий

Сохранение статей, опубликованных на kodcu.com, в виде документов (
не забывайте, что каждая запись в MongoDB действительно является документом ), которые имеют поля категории, заголовка, содержимого, даты, автора, тега; выполнение запросов, обновление и удаление операций на полях этих документов.  

> use kodcu
switched to db kodcu

В MongoDB нет команды create для создания базы данных, похожей на обычные базы данных sql. Нам это уже не нужно, потому что
MongoDB выполняет операцию создания, когда вы добавляете любую запись в определенную базу данных . Мы выполнили процесс определения базы данных с помощью приведенной выше команды
use kodcu . Как видно из вывода, мы также можем сделать выбор среди существующих баз данных командой use. 

> article  = {
              category: ["Articles"], 
              title: "Lean Kanban Workshop", 
              content: " Kanban system is an impressive approach in the field of software management for the last 10 years.", 
              date: new Date('2013-04-11'), 
              author: "Altuğ Bilgin Altıntaş", 
              tags: [null]}
{
	"category" : ["Articles"],
	"title" : "Lean Kanban Workshop",
	"content" : " Kanban system is an impressive approach in the field of software management for the last 10 years.",
	"date" : ISODate("2013-04-11T00:00:00Z"),
	"author" : "Altuğ Bilgin Altıntaş",
	"tags" : [null]
}
> db.articles.save(article)

Мы создали
коллекцию статей (
как я упоминал в предыдущей статье, коллекции в MongoDB соответствуют таблицам в мире sql ) в базе данных kodcu с помощью команды
db.articles.save (article) и добавили ранее
определенный объект article в эту коллекцию. Таким образом, мы добавили нашу первую запись (документ) в MongoDB.

Мы получаем тот же результат с помощью следующей команды. 

db.articles.insert({
                   category: [“Yazılar”], 
                   title: "Lean Kanban Workshop", 
                   content: " Kanban system is an impressive approach in the field of software management for the last 10 years.", 
                   date: new Date('2013-04-11'), 
                   author: "Altuğ Bilgin Altıntaş", 
                   tags: [null]})

> show dbs
kodcu	0.203125GB
local	0.078125GB
> show collections
articles
system.indexes
> db.articles.find()
{ "_id" : ObjectId("516a93d0b26184f91a8b985c"), 
  "category" : [ "Articles" ], 
  "title" : "Lean Kanban Workshop", 
  "content" : " Kanban system is an impressive approach in the field of software management for the last 10 years.", 
  "date" : ISODate("2013-04-11T00:00:00Z"), 
  "author" : "Altuğ Bilgin Altıntaş", 
  "tags" : [ null ] 
}

Как видно, база данных Kodcu и коллекция статей в этой базе данных сформированы. Мы выводим записи в связанной коллекции, выполняя
вызов
find () для коллекции. Значение, которое мы не ввели вручную, может привлечь ваше внимание, я имею в виду
значение
id .

Каждый документ в MongoDB имеет уникальное поле идентификатора. Мы имеем в виду
поле
_id здесь. Если какое-либо значение не назначено полю _id вручную, MongoDB назначает
уникальное значение идентификации типа ObjectId

Мы ввели нулевое значение в поле тега в первой записи, которую мы создали, теперь давайте обновим это поле.  

> db.articles.update({_id:ObjectId("516a93d0b26184f91a8b985c")}, 
                     {$set: {"tags": ["lean","kanban","training"]}})
> db.articles.find()
{ "_id" : ObjectId("516a93d0b26184f91a8b985c"), 
  "author" : "Altuğ Bilgin Altıntaş", 
  "category" : [ "Articles" ], 
  "content" : "Kanban system is an impressive approach in the field of software management for the last 10 years.", 
  "date" : ISODate("2013-04-11T00:00:00Z"), 
  "tags" : [ "lean", "kanban", "training" ], 
  "title" : "Lean Kanban Workshop" 
}

Давайте добавим новые записи сейчас и посмотрим, как выполнять запросы к этим записям.  

>db.articles.insert({
                    category: ["Articles"], 
                    title: "Take the reins with Backbone.js! – Free Webiner", 
                    content: "Backbone.js is a JavaScript library that helps your complicated Javascript code to be more structured and offers an environment in which development  is more pleasant.", 
                    date: new Date('2013-04-10'), 
                    author: "Kodcu.Com", 
                    tags: [null]})

>db.articles.insert({
                    category: ["Java", "Tutorial", "Articles", "Software"], 
                    title: "Data Indexing with Java to Apache", 
                    content: "Hi all, I mentioned in my previous article the installation and configuration of Apache Solr, data indexing from command line to Solr and making query operations through this data.", 
                    date: new Date('2013-04-09'), 
                    author: "Cüneyt Yeşilkaya", 
                    tags: ["java", "data indexing with java to solr", "solr", "solrj"]})

>db.articles.insert({
                    category: ["NoSQL", "Yazılar"], 
                    title: "The Core MongoDB Operations", 
                    content: "By creating awareness about the concept of NoSQL...", 
                    date: new Date('2013-04-15'), 
                    author: "Hüseyin Akdoğan", 
                    tags: ["mongodb", "nosql"]})

Давайте найдем статьи, написанные Altuğ Bilgin Altıntaş в текущих записях.  

> db.articles.find({author: "Altuğ Bilgin Altıntaş"})
{ "_id" : ObjectId("516a93d0b26184f91a8b985c"), 
  "author" : "Altuğ Bilgin Altıntaş", 
  "category" : [ "Articles" ], 
  "content" : "Kanban system is an impressive approach in the field of software management for the last 10 years.", 
  "date" : ISODate("2013-04-11T00:00:00Z"), 
  "tags" : [ "lean", "kanban", "training" ], 
  "title" : "Lean Kanban Workshop" 
}

Здесь мы увидели, как сделать запрос в соответствии с желаемым полем, и эта особенность является одной из точек, отличающей MongoDB от других решений NoSQL, как я уже упоминал ранее. Под тем же названием я также упомянул, что MongoDB предлагает своим пользователям использовать (
регулярные выражения ) в запросах. В этом контексте, когда мы хотим выяснить статьи, в которых содержатся
операторы
Backbone и
JavaScript , мы должны использовать такой синтаксис. 

> db.articles.find({content: {$regex: 'Backbone.*JavaScript'}})
{ "_id" : ObjectId("516a9432b26184f91a8b985d"), 
  "category" : [ "Articles" ], 
  "title" : "Take the reins with Backbone.js! – Free Webiner", 
  "content" : "Backbone.js is a JavaScript library that helps your complicated Javascript code to be more structured and offers an environment in which development  is more pleasant.", 
  "date" : ISODate("2013-04-10T00:00:00Z"), 
  "author" : "Kodcu.Com", 
  "tags" : [ null ] 
}

MongoDB предлагает довольно полезные 4 варианта при использовании
регулярных выражений . Один из них используется для запросов без учета прописных и строчных букв.  

> db.articles.find({content: {$regex: 'backbone.*javascript', $options: 'i'}})
{ "_id" : ObjectId("516a9432b26184f91a8b985d"), 
  "category" : [ "Articles" ], 
  "title" : "Take the reins with Backbone.js! – Free Webiner", 
  "content" : "Backbone.js is a JavaScript library that helps your complicated Javascript code to be more structured and offers an environment in which development  is more pleasant.", 
  "date" : ISODate("2013-04-10T00:00:00Z"), 
  "author" : "Kodcu.Com", 
  "tags" : [ null ] 
}

Наконец, давайте посмотрим, как удалить запись. 

> db.articles.find()
{ "_id" : ObjectId("516a93d0b26184f91a8b985c"), 
  "author" : "Altuğ Bilgin Altıntaş", 
  "category" : [ "Articles" ], 
  "content" : "Kanban system is an impressive approach in the field of software management for the last 10 years.", 
  "date" : ISODate("2013-04-11T00:00:00Z"), 
  "tags" : [ "lean", "kanban", "training" ], 
  "title" : "Lean Kanban Workshop" 
}
{ "_id" : ObjectId("516a9432b26184f91a8b985d"), 
  "category" : [ "Articles" ], 
  "title" : "Take the reins with Backbone.js! – Free Webiner", 
  "content" : "Backbone.js is a JavaScript library that helps your complicated Javascript code to be more structured and offers an environment in which development  is more pleasant.", 
  "date" : ISODate("2013-04-10T00:00:00Z"), 
  "author" : "Kodcu.Com", 
  "tags" : [ null ] 
}
{ "_id" : ObjectId("516a943bb26184f91a8b985e"), 
  "category" : [ "Java", "Tutorial", "Articles", "Software" ], 
  "title" : "Data Indexing with Java to Apache Solr’a Veri", 
  "content" : " Hi all, I mentioned in my previous article the installation and configuration of Apache Solr, data indexing from command line to Solr and making query operations through this data..", 
  "date" : ISODate("2013-04-09T00:00:00Z"), 
  "author" : "Cüneyt Yeşilkaya", 
  "tags" : [ "java", "data indexing with java to solr", "solr", "solrj" ] 
}
{ "_id" : ObjectId("516a9444b26184f91a8b985f"), 
  "category" : [ "NoSQL", "Articles" ], 
  "title" : "The Core MongoDB Operations", 
  "content" : " By creating awareness about the concept of NoSQL...", 
  "date" : ISODate("2013-04-15T00:00:00Z"), 
  "author" : "Hüseyin Akdoğan", 
  "tags" : [ "mongodb", "nosql" ] 
}

> db.articles.remove({_id:ObjectId("516a9444b26184f91a8b985f")})

Операции, которые мы обсуждали и выполняли через консоль, также возможны с помощью языков программного обеспечения, которые поддерживает MongoDB. Если все в порядке, я хочу обсудить, как выполнять аналогичные операции, выполняемые здесь с MongoDB, предоставленным родным драйвером Java, в следующем уроке.

Реальный контент выше, можно получить в 
ядре MongoDB операций