首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails Mongoid‘pluck`等同吗?

Rails Mongoid‘pluck`等同吗?
EN

Stack Overflow用户
提问于 2015-01-15 03:34:34
回答 6查看 4.1K关注 0票数 3

在我的Rails应用程序中,我使用MongoID和一个Elasticsearch河来进行文本搜索。

对于@devices_with_config = ConfigTextSearch.search params[:device_id],我只想提取查询中匹配记录的device_id字段。在mongoID 3.1.0中,我可以只使用Band.all.pluck(:name)。但不幸的是,我坚持使用3.0.23。

我看到有一个类似的moped表达式collections[:bands].find.select(name: 1)...but我是rails新手,不知道如何在控制器或模型中使用moped表达式。

关于如何在MongoId中提取匹配的'device_id‘字段,您有什么想法吗?

EN

回答 6

Stack Overflow用户

发布于 2015-03-06 00:40:17

Mongoid现在有了一个pluck函数。

mongoid#pluck

票数 3
EN

Stack Overflow用户

发布于 2015-01-15 03:39:38

您可以像这样获得一个轻便摩托车集合

代码语言:javascript
复制
 Band.collection.find.select(name: 1)
票数 1
EN

Stack Overflow用户

发布于 2015-07-27 14:21:02

看起来你实际上并不是在用那个调用构建一个Mongoid标准,但我没有研究过elasticsearch-rails,所以我不能百分之百确定。

如果你完全不能更新到3.1.0,你应该能够用猴子补丁这个功能。

代码语言:javascript
复制
module Mongoid
  class Criteria
    # select specific fields from collection based on current scope, returned as a hash
    def pluck(*fields)
      raise ArgumentError, 'Call this with at least one field' if fields.empty?

      collection.find(self.selector).select(Hash[fields.map { |field| [field, 1] }]).to_a
    end
  end
end

添加上述代码后,您应该能够执行以下操作:

代码语言:javascript
复制
Band.where(name: 'awesome').pluck(:id, :device_id)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27950979

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档