在我的Rails应用程序中,我使用带有Elasticsearch河的MongoID进行文本搜索。

对于@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) ...但我是rails的新手,无法弄清楚如何在控制器或模型中使用moped表达式。

关于如何在与MongoId的匹配中提取'device_id'字段的任何想法?

#1楼 票数:3

Mongoid现在具有pluck功能。

mongoid#勇气

#2楼 票数:1

您可以像这样获得一个Moped系列

 Band.collection.find.select(name: 1)

#3楼 票数:1

看起来你实际上并没有用这个调用建立一个Mongoid标准,但是我没有考虑过elasticsearch-rails所以我不能100%肯定。

如果您完全无法更新到3.1.0,那么您应该能够修改此功能。

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

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

Band.where(name: 'awesome').pluck(:id, :device_id)

#4楼 票数:1

mongoid中定义的pluck方法的等价物是:

plucked_array = User.where(:name =>'xyz')。map(&:field_to_be_plucked)

其中field_to_be_plucked是其值需要在Array中被拔出的字段的名称。

#5楼 票数:0

发现它....从我可以告诉这不是在MongoId文档.....

sue = bob.results.map { |r| r._source.device_id }

#6楼 票数:0

我用于同一目的,使用Mongoid 3.0:

Band.all.distinct(:name)

警告:仅在所有名称不同时才相关(如果要删除重复项,则相关)。

  ask by dman translate from so

未解决问题?本站智能推荐:

1回复

带有Mongoid的Rails应用程序不会在更新时保存

我正在制作一个使用Mongoid和devise的Rails应用。 目前,该功能是非常基本的功能,但无法正常运行。 特别是,更新根本不起作用。 我可以创建一个用户,但是当我回去更新它时,它不会引发任何错误,但是也不会保存。 使用某些代码可能会更清楚。 我在路线上有这个: 而这
1回复

虚拟属性的Mongoid查询数据库

背景:我有HABTM社区的帖子和用户。 在我的帖子模型中,我有一种方法,可以通过比较他们共同拥有多少个社区来计算与给定用户的帖子相关性: 目的:以给定的相关性查询帖子,即 要么 查询所有帖子并按相关性对它们进行排序,即 我知道某个地方需要用户变量,只是想知道是否有
2回复

Mongoid:如何在Hash字段上验证特定键的值?

在Mongoid中,我可以在类型为Hash的字段的属性上设置索引,如下所示: 我想做的是使用以下内容为这些实体创建验证: 不幸的是,这会产生以下错误: NoMethodError:未定义的方法`details.fullName'用于Thing 我是否犯了语法错误
2回复

使用Mongoid方法的find_by_slug未定义

我正在使用Mongoid(3.0.23),并且我想添加更好的URL,我遵循了这个方法,但是由于某种原因,我的网站为find_by_slug方法抛出了未定义的错误。 我已经读过一些我可以使用的宝石,但是对于这样一个简单的任务来说似乎毫无意义。 模型 视图 控制者
1回复

Mongoid和kaminari抛出未定义的方法页面

当将kaminari与mongoid一起使用时,出现错误 不知道出什么问题了。 我什至尝试跑步 我得到错误 该宝石存在于Gemfile中。 仔细检查。
1回复

kaminari和Mongoid 3页面无法正常工作

嗨,我正在尝试使用kaminari作为分页我的19K结果集合的一种方法,但是它似乎并没有按照锡盒上的说明去做? 我有19293个文件: 但是当我尝试获得首页时,我仍然会得到19293 知道我可以做什么吗? 我正在使用宝石: 提前致谢
1回复

检查对象是否已更新mongoid 3.x.

我更新了属性"title"但是当我尝试l.changed? 我false 。 我知道new_record? 方法,知道对象是否是新对象,但我需要知道对象是否更新。 我想知道,我怎么知道一个对象是否已经使用mongoid 3.x进行了更新?
2回复

如何仅按小时订购数据:MongoDB / Mongoid中的分钟格式? (没有约会!)

我在我的项目中使用MongoDB和Mongoid。 订购“时间”字段数据时遇到一些困难。 如您所知,尽管您在Mongoid文档中将字段类型设置为Time ,但时间数据将以此格式存储(请注意,我使用+2小时偏移量来获取我自己的时区而不是UTC): Mon, 31 Dec 2012 08