CoffeeScript - MongoDB

MongoDB é uma plataforma cruzada, banco de dados orientado a documentos que fornece alto desempenho, alta disponibilidade e fácil escalabilidade. O MongoDB trabalha no conceito de coleção e documento. Para obter mais informações, leia nosso Tutorial do MongoDB .

Neste capítulo, você aprenderá como se comunicar com o banco de dados MongoDB usando CoffeeScript.

Instalação

O banco de dados MongoDB pode ser integrado ao CoffeeScript usando o driver Node.js 2.0 do MongoDB. Em primeiro lugar, você precisa instalar o MongoDB em seu sistema, consultando o capítulo de ambiente de nosso tutorial do MongoDB.

Depois de instalar o MongoDB, navegue por seu bin pasta (se você não definiu o caminho) e inicie o serviço MongoDB conforme mostrado abaixo.

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

Finalmente, instale o driver MongoDB e suas dependências executando o seguinte comando NPM no prompt de comando.

npm install mongodb --save

Conectando-se ao MongoDB

Para se conectar ao MongoDB, primeiro de tudo crie o MongoClient usando isso, invoque o connect()função. Esta função aceita url e uma função de retorno de chamada como parâmetros.

O seguinte código CoffeeScript mostra como se conectar ao servidor MongoDB. Se o servidor MongoDB estiver sendo executado em seu sistema, este programa estabelece uma conexão com o servidor.

#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

Salve o código acima em um arquivo com o nome connect_db.coffeee execute-o conforme mostrado abaixo. Se o banco de dados for criado com sucesso, ele exibirá a seguinte mensagem

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

Criando uma coleção

Uma coleção no MongoDB contém os documentos que armazenamos nela. Você pode criar uma coleção usando ocollection()função. Esta função aceita um argumento de string que representa o nome da coleção que queremos criar.

O seguinte código CoffeeScript mostra como criar uma coleção no MongoDB. Em caso de erros, eles serão exibidos no console.

#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

Salve o código acima em um arquivo com o nome create_collection.coffeee execute-o conforme mostrado abaixo. Se a coleção for criada com sucesso, ela apresentará a seguinte mensagem

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

Inserindo Documentos

Você pode inserir documentos em uma coleção no MongoDB, você precisa invocar uma função chamada insert() passando a lista de documentos que precisam ser inseridos, como parâmetros.

O seguinte código CoffeeScript mostra como inserir documentos em uma coleção chamada My_collection. Em caso de erros, eles serão exibidos no console.

#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

Salve o código acima em um arquivo com o nome insert_documents.coffeee execute-o conforme mostrado abaixo. Se os documentos forem inseridos com sucesso, aparece a seguinte mensagem

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

Lendo Documentos

Você pode recuperar os documentos armazenados no MongoDB usando uma função chamada find(). O código CoffeeScript a seguir mostra como recuperar os registros armazenados no 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

Salve o código acima em um arquivo com o nome read_documents.coffeee execute-o conforme mostrado abaixo. Este programa recupera o documento necessário na coleção especificada e o exibe conforme mostrado abaixo.

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

Você também pode ler todos os documentos existentes em uma coleção particular executando o find() função sem passar quaisquer argumentos como mostrado abaixo.

#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

Salve o código acima em um arquivo com o nome read_all_documents.coffeee execute-o conforme mostrado abaixo. este programa recupera todos os documentos da coleção especificada e os exibe conforme mostrado abaixo.

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' } ]

Atualizando Documentos

Você pode atualizar os documentos armazenados no MongoDB usando uma função chamada update(). O código CoffeeScript a seguir mostra como atualizar os registros armazenados no 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

Este programa atualiza a cidade do funcionário chamado Ram de Hyderabad a Delhi.

Salve o código acima em um arquivo com o nome update_documents.coffeee execute-o conforme mostrado abaixo. este programa recupera os documentos na coleção especificada e os exibe conforme mostrado abaixo.

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

Após a atualização, se você executar o read_documents.coffee programa, então você observará que o nome da cidade da pessoa chamada Ram é atualizado a partir de Hyderabad para Delhi.

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' } ]

Apagando Documentos

Você pode excluir todos os documentos da coleção usando o remove()função. O código CoffeeScript a seguir mostra como excluir todos os registros armazenados no 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

Salve o código acima em um arquivo com o nome delete_documents.coffeee execute-o conforme mostrado abaixo. este programa remove todos os documentos na coleção especificada exibindo as seguintes mensagens.

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

Após a exclusão, se você executar o read_documents.coffee programa, então você obterá uma coleção vazia, conforme mostrado abaixo.

C:\> coffee Read_all_documents.coffee
Connection established to mongodb://localhost:27017/testdb
Found: [ ]