【问题标题】:How to check if for one record two fields have same value?如何检查一条记录的两个字段是否具有相同的值?
【发布时间】:2019-12-27 16:03:32
【问题描述】:

我正在尝试通过 rails 检查 mongodb 中一条记录的两个字段是否具有相同的值。我想检查一下 actual_user_id 和 user_id 中的值是否相同。

JobPosting.where(:actual_user_id => :user_id, created_at: @yesterday.midnight..@yesterday.end_of_day).count

【问题讨论】:

    标签: ruby-on-rails mongodb


    【解决方案1】:

    是否要返回所有具有重复的实际用户 ID 和用户 ID 的值?如果是这样的话:

    JobPosting.select(:actual_user_id,:user_id).group(:actual_user_id,:user_id).having("count(*) > 1")
    

    如果你想知道有多少重复,尝试在末尾添加大小:

    JobPosting.select(:actual_user_id,:user_id).group(:actual_user_id,:user_id).having("count(*) > 1").size
    

    但是,如果您知道要搜索的 user_id 和 actual_user_id,并将它们分配给变量:

    JobPosting.where(actual_user_id: actual_user_id, user_id: user_id)
    

    第一个将返回重复组,第二个将返回重复值以及它们出现的频率,最后一个将返回所有与给定值匹配的 actual_user_id 和 user_id 记录。

    取自:Find rows with multiple duplicate fields with Active Record, Rails & Postgres

    编辑: 要在查询中包含 created_at 并获取重复项的数量以及值,我认为您正在查看:

    JobPosting
      .where(created_at: @yesterday.midnight..@yesterday.end_of_day)
      .select(:actual_user_id,:user_id)
      .group(:actual_user_id,:user_id)
      .having("count(*) > 1")
      .size
    

    【讨论】:

    • 我想知道在我试图用创建的 _at 指定的时间范围内有多少重复项。
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 2014-02-03
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多