【问题标题】:Should i store my facebook_ids as Integer or as String in mongo?我应该将我的 facebook_ids 存储为整数还是字符串在 mongo 中?
【发布时间】:2012-06-14 02:53:09
【问题描述】:

我有以下(使用 mongoid):

class FacebookUser
  include Mongoid::Document
  include Mongoid::Timestamps    
  field :uid,   type: String
  field :friends,   type: Array
end

我正在使用 mongoid,我想知道是否将 facebook_ids 和 facebook_ids_of_friends(Array) 存储为 BigDecimal、Integer 或 String。我将使用 uid 进行查询,所以有点担心速度。

或者:

class FacebookUser
  include Mongoid::Document
  include Mongoid::Timestamps    
  field :uid,   type: Integer
  field :friends,   type: Array  #???How do I get this to store ints instead of strings
end

为了避免重复投射,我认为第一个选项更好但想获得另一个意见?另外,如果我使用选项 2,我将如何使用整数存储数组?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 mongodb mongoid


    【解决方案1】:

    使用字符串。使用数字类型的唯一原因是您是否要对数据进行计算。尝试添加两个用户 ID 是荒谬的,因此它们不应存储为整数。

    【讨论】:

    • 计算并不是选择整数而不是字符串的唯一原因。索引整数比字符串更有效,因为 mongodb 使用 B-tree 索引,就像其他 RDBMS 数据库一样。
    【解决方案2】:

    试试这个

    class FacebookUser
    
        identity :type => String
    
    end
    

    由于identity :type => String 行,您的模型 id 将变为字符串类型,您可以将 facebook 用户 id(uid) 直接保存在那里,而不是创建一个新字段。查找用户等查询将非常简单快捷

    例如

    找到一个用户

    FacebookUser.find(facebook user id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 2011-11-04
      • 1970-01-01
      • 1970-01-01
      • 2016-09-03
      • 1970-01-01
      • 2018-02-04
      • 2012-10-01
      相关资源
      最近更新 更多