【问题标题】:How do I query for a specific MongoDB collection field inside Rails Console?如何在 Rails 控制台中查询特定的 MongoDB 集合字段?
【发布时间】:2012-06-04 21:26:33
【问题描述】:

我有一个使用 MongoDB 的 Rails 3 应用程序,其中 Mongoid 作为 ORM。我想查询集合中的特定字段。

要查询特定集合的所有记录,我使用 User.all.to_a,相当于 ActiveRecord 中的 User.all

现在我想查询一个集合中的所有记录,但只输出一个特定的字段。在这种情况下,我想查看所有用户名。我该怎么做?

我确定我已经在 Mongoid 文档中看到了这一点,只是遗漏了一些东西......

【问题讨论】:

    标签: mongodb mongoid rails-console


    【解决方案1】:

    我在 mongoid 的新文档中找不到它,但这里有一个指向 only 的快速链接,指向旧的 2.x.x 文档。

    基本上你需要做的:

    User.all.only(:name).to_a
    

    【讨论】:

    • 对我不起作用...User.all.only(:name).to_aUser.only(:name).to_a 都转储了所有用户文档的数组,包括所有相关字段。如果执行User.all.distinct(:name) 之类的操作,它只会为我提供相应 :name 字段的输出。不知道为什么你的建议不起作用。好像应该...
    • 这就是它在 Mongoid 中的工作方式,您不会只返回字段、值,而是每个文档都只填充了该字段。您始终可以映射数组,但这可能效率低下,具体取决于您的上下文。比如:User.only(:name).all.to_a.map{|u| u.name}.
    • @J.Venator 使用only,只有指定的字段从 db 以文档的形式返回,mongoid 将它们包装在 Model 实例中。 distinct 但是只返回指定值的数组。可能是我误解了这个问题,你需要distinct
    猜你喜欢
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 2012-11-20
    • 1970-01-01
    • 2014-03-07
    • 1970-01-01
    • 1970-01-01
    • 2016-07-29
    相关资源
    最近更新 更多