最近在做一个项目,数据库使用的是mongo和redis,使用ruby on rails 进行编码提供给客户端API接口
假设有User表
#<User _id: 5497793c73616e2a0c010000, created_at: "2014-12-22T01:51:56.170Z", updated_at: "2015-01-06T03:36:52.689Z", avatar: "2014.png", encrypted_password: “ 23456", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: "2014-12-22T01:48:49.428Z", sign_in_count: 1451, current_sign_in_at: "2014-12-24T02:04:15.075Z", last_sign_in_at: "2014-12-24T02:04:15.055Z", authentication_token: "838PySjM", auth_admin_token: "6kgsWsAFg", name: “ 3221", phone: "16812708279", birthday: "2003-12-22", gender: "male", tags: [], city: nil, works: nil, constellation: "摩羯座", description: nil>
1.从数据库中查找某个用户
User.find('5497793c73616e2a0c010000') -----> User.find('用户ID')
2.使用手机号查询的话
User.where(phone:123456789).first ---> User.where(phone:用户手机号).first
3.查询除本用户以外的所有用户
@users = User.not_me(@user).all
mode 中 scope :not_me, -> (user){ where(:user_id.ne => user.user_id)} user为用户标识字段,即主键
4.查询和自己性别不同的用户
@users = User.where(:gender.ne => @user.gender).all
5.查询和星座运势匹配的用户
map = {"白羊座"=>["射手座","狮子座","白羊座"],
"金牛座"=>["处女座","摩羯座","金牛座"],
"双子座"=>["水瓶座","天秤座","双子座"],
"巨蟹座"=>["双鱼座","天蝎座","巨蟹座"],
"狮子座"=>["白羊座","射手座","水瓶座"],
"处女座"=>["摩羯座","处女座","金牛座"],
"天秤座"=>["双子座","水瓶座","天秤座"],
"天蝎座"=>["巨蟹座","双鱼座","天蝎座"],
"射手座"=>["狮子座","射手座","白羊座"],
"摩羯座"=>["金牛座","处女座","摩羯座"],
"水瓶座"=>["天秤座","双子座","水瓶座"],
"双鱼座"=>["天蝎座","巨蟹座","双鱼座"]}
@users = User.where(:constellation.in => map[@user.constellation]).all
6.查询不属于某个条件的所有用户,取8个
@users = User.where(:user_id.nin => ['1234','4321']).limit(8)
7.对查询按某种要求排序
@users = User.desc(:last_sign_in_at)