Mongoid嵌入式文档搜索不会搜索所有嵌入式文档

时间:2013-07-24 20:23:10

标签: search mongoid

使用Mongoid,我有一个Order类和一个LineItem类。 Order类embeds_many line_items。标准功能正常。但是,搜索嵌入的行项目似乎总是起作用。例如,LineItem类有一个" account_id"领域。在尝试查找包含至少1个具有nil account_id字段的行项目的所有订单时,我尝试这样做:

Order.where('line_items.account_id' => nil)

这会返回2个订单,实际上包含含有nil account_ids的订单项。这两个订单都包含多个订单项,并且在两个订单中,某些订单项都有account_ids,因此这似乎可以按预期工作。

无论其

我碰巧发现我们系统中实际上有4个订单包含含有nil account_ids的订单项。我使用类似的东西验证了这一点:

Order.all.each do |o|
  puts o._id if o.line_items.where(account_id: nil).count > 0
end

这打印出4个订单ID。我已经进入了这四个中的每一个并确认每个人确实包含一个帐号,其中account_id设置为nil。那么,为什么不进行第一次搜索工作呢?为什么第一次搜索只返回2个订单而不是4个?

在做了一些挖掘之后,我发现,在第一个查询返回的2个订单中,每个订单中的第一个订单项都有一个nil account_id。在包含nil account_ids但未被第一个查询返回的订单项的其他2个订单中,这两个订单中的第一个订单项都没有nil account_id,因此我想知道第一个搜索是否为I used仅用于实际搜索每个订单的许多嵌入行项目中的第一个。

这是一个Mongoid错误吗?或者我在这里做错了什么?我必须假设我做错了什么,但我无法找到可能出现的任何迹象。

0 个答案:

没有答案