ruby로 mongodb3 (사용자 인증 포함)에 연결 · DB 작업 확인 메모

7371 단어 MongoDBcentos7루비

소개



centos7상에서 동작하는 mongodb3(유저 인증 설정 있음)를 ruby(2.5.0p0)로부터 조작하는 검증을 실시했을 때의 자신 메모입니다.
mongodb3의 구성은 @SOJO 님의 기재한 여기의 절차 를 확인해 주십시오.

ruby gem [mongo] 설치


sudo gem install mongo

검증 프로그램



자세한 내용은 코멘트를 확인하십시오. 또한, Rubocop은 부티크 구문입니다.
require 'mongo'

#
class UseMongo
  # 標準出力を汚さないためのおまじない。商用利用時は出力をlogfileにする設定変更要。
  Mongo::Logger.logger.level = Logger::FATAL
  # 接続情報の定数化
  CLIENT = Mongo::Client.new(
    %w[127.0.0.1:27017], # array(ip:port) default_setting
    database: 'test',
    user: 'myuser',
    password: ENV['TEST_DATABASE_PASSWORD']
  )
  # 操作対象となるコレクション(rdbmsのテーブル)を定数化
  COLLECTION = CLIENT[:test_collection]

# insert処理検証
  def insert(item)
    return false if item.nil? || item.length.zero?
    # example
    COLLECTION.insert_one(item)
    true
  rescue StandardError => e
    e
  end

  # collectionを全て取得するメソッドなのでactive_recordっぽくallメソッドとする。
  def all
    COLLECTION.find
  rescue StandardError => e
    e
  end

  #Whereメソッドkey,val指定でデータ取得
  def where(key, val)
    return false if key.nil? || key.length.zero?
    return false if val.nil? || val.length.zero?
    COLLECTION.find({"#{key}": "#{val}"})
  rescue StandardError => e
    e
  end

  # whereのIN句 [col] IN (array)として検索。
  def where_in(col ,arr)
    return false if col.nil? || col.length.zero?
    return false if arr.nil? || arr.length.zero?
    COLLECTION.find({"#{col}":{ '$in': arr }})
  rescue StandardError => e
    e
  end
end

# exapmle 以下、動作確認したいメソッドをコメントアウトして実行。
mongo = UseMongo.new

# v = { hoge: 'fuga', cat: 'tama' }
# doc = {vern: ['食べログ3.5','高評価','美味い','高い']}
# mongo.insert(v) # insert
# mongo.insert(doc) # insert
# mongo.all.each {|m| puts m }
# mongo.where('hoge', 'fuga').each {|w| puts w }
# arr = %w[キツい 高い]
# mongo.where_in('vern',arr).each {|w| puts w }

좋은 웹페이지 즐겨찾기