Coffeescript-mongodb

提供:Dev Guides
移動先:案内検索

CoffeeScript-MongoDB

MongoDBは、高性能、高可用性、および容易なスケーラビリティを提供するクロスプラットフォームのドキュメント指向データベースです。 MongoDBは、コレクションとドキュメントの概念に基づいて機能します。 詳細については、http://www.finddevguides.com/mongodb/index [MongoDBチュートリアル]をご覧ください。

この章では、CoffeeScriptを使用してMongoDBデータベースと通信する方法を学習します。

インストール

MongoDBデータベースは、MongoDBのNode.js 2.0ドライバーを使用してCoffeeScriptと統合できます。 まず、MongoDBチュートリアルのlink:/mongodb/mongodb_environment [environment]の章を参照して、システムにMongoDBをインストールする必要があります。

MongoDBをインストールした後、 bin フォルダーを参照して(パスを設定していない場合)、以下に示すようにMongoDBサービスを開始します。

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

最後に、コマンドプロンプトで次のNPMコマンドを実行して、MongoDBドライバーとその依存関係をインストールします。

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

文書を読む

  • find()*という名前の関数を使用して、MongoDBに保存されているドキュメントを取得できます。 次の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' } ]

ドキュメントの更新

  • update()*という名前の関数を使用して、MongoDBに保存されているドキュメントを更新できます。 次の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 プログラムを実行すると、Ramという名前の人の都市名が Hyderabad から 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' } ]

ドキュメントを削除する

  • 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 プログラムを実行すると、次のように空のコレクションが取得されます。

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