【发布时间】:2015-03-09 02:36:56
【问题描述】:
我想得到mongoid生成的mongo查询表达式怎么办?
例如这是mongoid语法
History.where(report_type: params["report_type"]).order_by(ts:1).only(:ts).last
我希望有方法,例如to_sql,来获取本机查询表达式,以便我可以在 Mongo 控制台上应用它。
【问题讨论】:
标签: ruby-on-rails mongoid
我想得到mongoid生成的mongo查询表达式怎么办?
例如这是mongoid语法
History.where(report_type: params["report_type"]).order_by(ts:1).only(:ts).last
我希望有方法,例如to_sql,来获取本机查询表达式,以便我可以在 Mongo 控制台上应用它。
【问题讨论】:
标签: ruby-on-rails mongoid
MongoDB 并没有像 SQL 这样的查询语言,所以你不能把整个事情放在一个漂亮的紧凑的部分中。但是,您可以得到碎片。
这个:
History.where(report_type: params["report_type"]).order_by(ts:1).only(:ts)
构建一个Mongoid::Criteria。这或多或少是底层查询的 Mongoid 版本。您可以通过调用selector来提取查询:
q = History.where(report_type: params["report_type"]).order_by(ts:1).only(:ts)
q.selector
# { 'report_type' => whatever_was_in_params }
通过查看options[:sort]进行排序:
q.options[:sort]
# { 'ts' => 1 }
而fields 在options[:fields]:
q.options[:fields]
# { 'ts' => 1 }
【讨论】: