ruby로 mongodb3 (사용자 인증 포함)에 연결 · DB 작업 확인 메모
소개
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 }
Reference
이 문제에 관하여(ruby로 mongodb3 (사용자 인증 포함)에 연결 · DB 작업 확인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/akihiro-o/items/e7de9d0aafee8b49b42c
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
sudo gem install mongo
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 }
Reference
이 문제에 관하여(ruby로 mongodb3 (사용자 인증 포함)에 연결 · DB 작업 확인 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/akihiro-o/items/e7de9d0aafee8b49b42c텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)