Учебники

CoffeeScript — MongoDB

MongoDB — это кроссплатформенная, ориентированная на документы база данных, которая обеспечивает высокую производительность, высокую доступность и простоту масштабирования. MongoDB работает над концепцией сбора и документа. Для получения дополнительной информации прочитайте наш учебник MongoDB .

В этой главе вы узнаете, как взаимодействовать с базой данных MongoDB с помощью CoffeeScript.

Монтаж

База данных MongoDB может быть интегрирована с CoffeeScript с помощью драйвера Node.js 2.0 от MongoDB. Прежде всего вам необходимо установить MongoDB в вашей системе, обратившись к главе о среде нашего руководства MongoDB.

После установки MongoDB успешно просмотрите его папку bin (если вы не указали путь) и запустите службу MongoDB, как показано ниже.

C:\Program Files\MongoDB\Server\3.2\bin> mongod

Наконец, установите драйвер MongoDB и его зависимости, выполнив следующую команду NPM в командной строке.

npm install mongodb --save

Подключение к MongoDB

Чтобы подключиться к MongoDB, сначала создайте MongoClient с помощью этого, вызовите функцию connect () . Эта функция принимает URL и функцию обратного вызова в качестве параметров.

Следующий код CoffeeScript показывает, как подключиться к серверу MongoDB. Если в вашей системе запущен сервер MongoDB, эта программа устанавливает соединение с сервером.

#Requiring the Mongodb package
mongo = require 'mongodb'

#Creating a MongoClient object
MongoClient = mongo.MongoClient

#Preparing the URL
url = 'mongodb://localhost:27017/testdb'

#Connecting to the server
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url
    #Close connection
    db.close()
  return

Сохраните приведенный выше код в файле с именем connect_db.coffee и выполните его, как показано ниже. Если база данных успешно создана, она выдаст следующее сообщение

c:\> coffee connect_db.coffee
coffee connect_db.collection
Connection established to mongodb://localhost:27017/testdb

Создание коллекции

Коллекция в MongoDB содержит документы, которые мы храним в ней. Вы можете создать коллекцию с помощью функции collection () . Эта функция принимает строковый аргумент, представляющий имя коллекции, которую мы хотим создать.

Следующий код CoffeeScript показывает, как создать коллекцию в MongoDB. В случае каких-либо ошибок они будут отображаться на консоли.

#Requiring the Mongodb package
mongo = require 'mongodb'

#Creating a MongoClient object
MongoClient = mongo.MongoClient

#Preparing the URL
url = 'mongodb://localhost:27017/testdb'

#Connecting to the server
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url
	
    #Create collection
    col = db.collection('My_collection')
    console.log "Collection created successfully."
	
    #Close connection
    db.close()
  return

Сохраните приведенный выше код в файле с именем create_collection.coffee и выполните его, как показано ниже. Если коллекция создана успешно, она выдаст следующее сообщение

c:/> coffee create_collection.coffee
Connection established to mongodb://localhost:27017/testdb
Collection created successfully.

Вставка документов

Вы можете вставлять документы в коллекцию в MongoDB, вам нужно вызвать функцию с именем insert () , передав список документов, которые необходимо вставить, в качестве параметров.

Следующий код CoffeeScript показывает, как вставить документы в коллекцию с именем My_collection . В случае каких-либо ошибок они будут отображаться на консоли.

#Sample JSON Documents
doc1 = {name: 'Ram', age: 26, city: 'Hyderabad'}
doc2 = {name: 'Rahim', age: 27, city: 'Banglore'}
doc3 = {name: 'Robert', age: 28, city: 'Mumbai'}

#Requiring the Mongodb package
mongo = require 'mongodb'

#Creating a MongoClient object
MongoClient = mongo.MongoClient

#Preparing the URL
url = 'mongodb://localhost:27017/testdb'

#Connecting to the server
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url  
  #Creating collection
  col = db.collection('My_collection')
	
  #Inserting documents
  col.insert [doc1,doc2,doc3], (err, result) ->
    if err
      console.log err
    else
      console.log "Documents inserted successfully"
    #Close connection
    db.close()
    return
  return

Сохраните приведенный выше код в файле с именем insert_documents.coffee и выполните его, как показано ниже. Если документы вставлены успешно, то выдается следующее сообщение

c:/> coffee insert_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Documents inserted successfully

Чтение документов

Вы можете получить документы, которые хранятся в MongoDB, используя функцию с именем find () . Следующий код CoffeeScript показывает, как получить записи, которые хранятся в MongoDB.

#Requiring the Mongodb package
mongo = require 'mongodb'

#Creating a MongoClient object
MongoClient = mongo.MongoClient

#Preparing the URL
url = 'mongodb://localhost:27017/testdb'

#Connecting to the server
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url	
	#Creating collection object
    col = db.collection('My_collection')    
    #Inserting Documents
    col.find({name: 'Ram'}).toArray (err, result)->
      if err
        console.log err
      else 
      console.log 'Found:', result			
      #Closing connection
      db.close()
      return
  return

Сохраните приведенный выше код в файле с именем read_documents.coffee и выполните его, как показано ниже. Эта программа извлекает необходимый документ из указанной коллекции и отображает его, как показано ниже.

C:\> coffee read_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Found: [ { _id: 56e269c10478809c3009ad1e,
    name: 'Ram',
    age: 26,
    city: 'Hyderabad' } ]

Вы также можете прочитать все документы, существующие в определенной коллекции, выполнив функцию find (), не передавая ей никаких аргументов, как показано ниже.

#Requiring the Mongodb package
mongo = require 'mongodb'

#Creating a MongoClient object
MongoClient = mongo.MongoClient

#Preparing the URL
url = 'mongodb://localhost:27017/testdb'

#Connecting to the server
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url	
	#Creating collection object
    col = db.collection('My_collection')    
    #Reading all Documents
    col.find().toArray (err, result)->
      if err
        console.log err
      else 
      console.log 'Found:', result			
      #Closing connection
      db.close()
      return
  return

Сохраните приведенный выше код в файле с именем read_all_documents.coffee и выполните его, как показано ниже. эта программа извлекает все документы из указанной коллекции и отображает их, как показано ниже.

C:\> coffee read_all_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Found: [ { _id: 56e2c5e27e0bad741a68c03e,
    name: 'Ram',
    age: 26,
    city: 'Hyderabad' },
  { _id: 56e2c5e27e0bad741a68c03f,
    name: 'Rahim',
    age: 27,
    city: 'Banglore' },
  { _id: 56e2c5e27e0bad741a68c040,
    name: 'Robert',
    age: 28,
    city: 'Mumbai' } ]

Обновление документов

Вы можете обновить документы, которые хранятся в MongoDB, используя функцию с именем update () . Следующий код CoffeeScript показывает, как обновить записи, которые хранятся в MongoDB.

#Get mongo client object
MongoClient = require('mongodb').MongoClient
#Connecting to mongodb
url = 'mongodb://localhost:27017/testdb'
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url	
	#Creating collection
    col = db.collection('My_collection')
    #Reading Data
    col.update {name:'Ram'},{$set:{city:'Delhi'}},(err, result)->
      if err
        console.log err
      else 
      console.log "Document updated"    
      
      #Closing connection
      db.close()
	  return
  return

Эта программа обновляет город сотрудника по имени Рам из Хайдарабада в Дели.

Сохраните приведенный выше код в файле с именем update_documents.coffee и выполните его, как показано ниже. эта программа извлекает документы из указанной коллекции и отображает их, как показано ниже.

C:\> coffee update_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Document updated

После обновления, если вы запустите программу read_documents.coffee , вы увидите, что имя города человека по имени Рам обновляется с Хайдарабада до Дели .

C:\> coffee Read_all_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Found: [ { _id: 56e2c5e27e0bad741a68c03e,
    name: 'Ram',
    age: 26,
    city: 'Delhi' },
  { _id: 56e2c5e27e0bad741a68c03f,
    name: 'Rahim',
    age: 27,
    city: 'Banglore' },
  { _id: 56e2c5e27e0bad741a68c040,
    name: 'Robert',
    age: 28,
    city: 'Mumbai' } ]

Удаление документов

Вы можете удалить все документы из коллекции, используя функцию remove () . Следующий код CoffeeScript показывает, как удалить все записи, которые хранятся в MongoDB.

#Get mongo client object
MongoClient = require('mongodb').MongoClient
#Connecting to mongodb
url = 'mongodb://localhost:27017/testdb'
MongoClient.connect url, (err, db) ->
  if err
    console.log 'Unable to connect . Error:', err
  else
    console.log 'Connection established to', url	
	#Creating collection
    col = db.collection('My_collection')
    #Deleting Data
    col.remove()
    console.log "Document deleted"
      
    #Closing connection
    db.close()	  
  return

Сохраните приведенный выше код в файле с именем delete_documents.coffee и выполните его, как показано ниже. эта программа удаляет все документы в указанной коллекции, отображая следующие сообщения.

C:\> coffee delete_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Document deleted

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