mongo_mapper&ruby
Mongomapper 用户mongo数据库配置,以及其提供了很多mongo的方法,可以很好地用来 对mongo相关封装和操作。 环境准备:gem install mongo_mapper 和activerecord很类似。将mongo的collection(表)和 类一一对应。 mongo_mapper 网上方法资源:http://mongomapper.com/documentation/plugins/querying.html 1、mongo配置从yml文件中读取 mongo55:host: *** port: *** database: **** 2、mongo collection封装: 1)初始化mongo数据库连接 2)将需要的collections name 以类形式封装 #encoding:utf-8require 'active_model' require 'mongo' require 'mongo_mapper' =begin author: kanlijun date: 2016/07/13 description: 使用mongo_mapper模块实现collections封装,统一调配;初始化mongo连接,定义表和类对应关系 =end class ConnectMongo def initialize(host,port,database) MongoMapper.connection =Mongo::Connection.new(host,port) MongoMapper.database=database end end #mobile class Mobile include MongoMapper::Document set_collection_name 'mobile' end #ncontacts class Ncontact include MongoMapper::Document end 3、调用rb文件案例: 1)读取yml配置数据,并初始化; 2)使用mongo_mapper的mongo操作方法 #encoding:utf-8require 'mongo_mapper' require_relative '../source/core/mongodb' DATA_PATH='../source/data/mongo.yml' mongo = YAML.load(File.open(DATA_PATH)) db =mongo['mongo55'] host,port,database =db['host'],db['port'],db['database'] ConnectMongo.new(host,port,database) mobile = Mobile.all(:anion=>'789757') puts mobile[0]['de'] puts mobile.length #条件搜索排序 nsms = Nsms.where(:urr=>'789757').sort(:time.desc).all puts nsms[1]['p'] lim =Nsms.first # puts lim puts lim['urr'] #排序 mo= Nsms.sort(:time.desc).first puts mo['urr'] #随机拿出几个 mo= Nsms.limit(3).all puts mo[0]['urr'] puts mo[2]['urr'] count = Nsms.where(:urr=>'789757').count puts "count:#{count}"
|