我在mongodb中有以下查询db,它正确地返回我需要的内容:
db.collection.find({field1: 2801394}, {name: 1, field2: 1, _id: 1, "field3.2801394": 1})
注意字段3是一个散列,此处使用的密钥与field1中的字段1中的值相同。
如何将此查询转换为mongoid?这里有两个主要问题,我无法在网上找到任何一个单独的问题:
谢谢!
答案 0 :(得分:7)
为了过滤/投射一个或多个字段,您可以使用http://mongoid.org/en/origin/docs/options.html处的Queryable.only。
该页面上给出的示例:
queryable.only(:name, :age)
对于嵌套字段,您可以在参数中使用字符串而不是符号:
queryable.only(:name, :field2, :_id, 'field3.2801394')
答案 1 :(得分:3)
您可以使用pluck
解决两个问题:
一次采摘两个字段:
Model.where(conditions).pluck(:field1, :field2)
用于采集嵌套字段:
Model.where(conditions).pluck('field.nested_field')
奖励:如果你想要一个字段和其他字段的嵌套字段,你也可以这样做:
Model.where(conditions).pluck(:field1, 'field2.nested_field')
而且,即便如此:
Model.where(conditions).pluck('field.one.two')
其中two
是one
的嵌套字段,后者又是field
的嵌套字段。
此外,“字段”可以是String
,Symbol
或Array
根据其文档:Mongoid::Contextual::Mongo#pluck
答案 2 :(得分:1)