2

OriginMongoid之间的文档并不清楚如何使用 Origin::Queryable 对象。我可以构建一个 Origin::Queryable 对象,然后将其传递给 ModelName.where 方法吗?看来我不能,但另一方面,似乎是一件完全明智的事情。我可以想象一种情况,我根据一些逻辑构建一个 Queryable,然后将其传递给模型的 where 子句。这可能吗,我只是做得不对吗?

这就是我所描绘的:

class Criteria
  include Origin::Queryable
end

criteria = Criteria.new
criteria.where(category: 'vacuum').ne(dept: 'home')
vacuums = Product.where(criteria)

这就是我认为它会起作用的方式,但事实并非如此。构建 Criteria 对象后如何处理它?

4

1 回答 1

1

所以它是这样工作的:

c = Criteria.new
c = c.where(category: 'a').ne(dept: 'home')

然后你有了你的标准c,现在你只需使用它,如果你使用的是 10gen 驱动程序,你可以像这样使用:

collection.find(c.selector, c.options)

或使用轻便摩托车:

session[:collection].find(c.selector).select(c.options.fields)

这应该可以,只是做了一些本地测试,对我来说很好。

于 2012-12-25T18:52:42.420 回答