【问题标题】:Query document with embedded documents with date ranges in Mongoid在 Mongoid 中查询具有日期范围的嵌入文档的文档
【发布时间】:2012-09-24 14:53:10
【问题描述】:

假设我有一个用户文档,其中包含许多活动作为嵌入文档。每次用户在网站上做某事时,都会创建一个活动文档(例如)。

class User
  include Mongoid::Document
  has_many :activities
end

class Activity
  include Mongoid::Document
  field :action_executed_at, type: DateTime
  belongs_to :user
end

我现在想查询今天之后有活动的所有用户。这可以用 Mongoid 完成吗?我试过这样的查询:

User.where("activities.action_executed_at" => {"$gt" => DateTime.now.to_s})

甚至:

User.where("activities" => {
  "$elemMatch" => { 
     "action_executed_at" => {
       "$gt" => DateTime.now.to_s 
      } 
   } 
})

但他们总是返回并清空集合。

【问题讨论】:

    标签: ruby-on-rails mongoid embed


    【解决方案1】:

    试试这个

    User.where(:'activities.action_executed_at'.gt => DateTime.now)
    

    【讨论】:

    • 没有成功。一旦我对这些where 方法调用计数,Mongoid 就会告诉我:“BSON::InvalidDocument:无法将 DateTime 类的对象序列化为 BSON。”这可能是其他问题的气味吗?
    • 谢谢,已经尝试过了,但它总是返回 0 个结果。我在想这可能表明我做错了什么?
    • 不,很抱歉,还没有解决方案。我有一个解决方法,但没有解决。如果我找到它会报告。
    猜你喜欢
    • 2020-03-19
    • 2011-04-26
    • 2015-04-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多