ruby-on-rails-3 - 使用 MongoID 在 Rails 中进行标记的良好解决方案

在 Rails 中使用 MongoID 进行标记有什么好的解决方案?

似乎向文档中添加哈希或数组非常简单,但我不确定这是否是最好的方法。

也许是一些 gem ?还是嵌套文档的简单技巧?

最佳答案

目前,我使用了一种非常简单的方法,效果很好:只需包含一个 Array 字段。

#app/models/image.rb
class Image
  include Mongoid::Document
  include Mongoid::Timestamps

  field :message, :type => String
  field :tags, :type => Array

  def self.images_for tag
    Image.any_in(:tags => [tag])
  end
end

#routes.rb
match "tag/:tag" => "images#tag"

#/app/controller/images_controller.rb
class ImagesController < ApplicationController
  # GET /tag
  # GET /tag.xml
  def tag
    @images = Image.images_for params[:tag]

    respond_to do |format|
      format.html { render "index" }
      format.xml  { render :xml => @images }
    end
  end
end

这可行,但我对 Image.any_in map/reduce 的性能仍然有些怀疑。我认为该 map/reduce 可能有更好的解决方案,但尚未找到。

https://stackoverflow.com/questions/5457831/

相关文章:

mongodb - 当数据库大小大于 RAM 时,MongoDB 可以工作吗?

javascript - MongoDB/ Mongoose : MarkModified a ne

mongodb - MongoError : The $subtract accumulator i

javascript - Meteor.js 使用 X509 证书身份验证连接到 Mongo

java - 哪个是 mongodb 访问的最佳 java 驱动程序?

c# - 如何通过使用 MongoDB C# 驱动程序调用 obj.ToBsonDocument()

java - MongoRepository findByCreatedAtBetween 没有返回

arrays - 如何遍历 Reactjs 中的表格行和单元格

node.js - 如何更新 Mongoose 中的特定字段?

mongodb - 在 golang 中连接到远程 mongodb 服务器失败,出现身份验证错误