使用MongoID的MongoDB在查询查询中获取少量字段

时间:2014-04-14 12:51:01

标签: ruby-on-rails-3 mongoid3

我正在尝试编写一些宁静的Web API,我有一个名为社区的集合,它有大约10个字段。但在我的GetCommunityAPI调用中,我只想将必要的信息传递给移动设备。

我已经提到了这个blog example,这提出了以下MongoDB查询

$db->users->find({}, {username => 1});

我把我的Mongoid搜索写成

@result=@result.find({},{:username=>1})

但是这给了我一个错误,它无法找到id = {}

的有效文档

我也试过

@result=@result.only({:username=>1})

但是不是仅返回用户名,而是返回使其他字段为空的所有内容。

{"_id":"534186e5414fc34bc5000002","ad":null,"ae":null,"cat":null...and so on}

我的问题是,为了使API调用最有效。消耗最少量的移动数据是可以发送以下格式从MongoDB获取数据

{"_id":"534186e5414fc34bc5000002"}

这种方法会使我的所有API仅发送有效信息,并且对移动网络友好。因为我期望在单个API调用中有大约1000个对象。

还可以以这种格式获取输出吗?

[{"_id":"534186e5414fc34bc5000002","un":"Name"},{"_id":"534186e5414fc34bc500000‌​3","un":"Dummy"}]

1 个答案:

答案 0 :(得分:0)

使用mongo本身,它将返回null个值。您是否尝试在mongoid 3中使用pluck方法?

Collection.all.pluck(:username)