【发布时间】:2013-11-28 05:53:38
【问题描述】:
在某个字段上搜索集合时,我可以指定我只想返回某些字段。在只返回一个字段的情况下,比如说“_id”,find 命令返回一个键值对数组 [ {_id:123},{_id:234},{_id:345}] 有没有办法让 find 只返回一个值数组?如: [123、234、345]
我可以自己按摩返回的数组,但如果 mongodb 可以为我做这件事,那么我宁愿让它这样做。
【问题讨论】:
在某个字段上搜索集合时,我可以指定我只想返回某些字段。在只返回一个字段的情况下,比如说“_id”,find 命令返回一个键值对数组 [ {_id:123},{_id:234},{_id:345}] 有没有办法让 find 只返回一个值数组?如: [123、234、345]
我可以自己按摩返回的数组,但如果 mongodb 可以为我做这件事,那么我宁愿让它这样做。
【问题讨论】:
为了获得这种输出,您必须使用聚合框架。即使使用聚合框架,您能得到的最好结果是:
{ values: [ 123, 234, 345 ] }
您基本上必须使用$group 将您的所有值组合在一起。像这样的:
db.collectionName.aggregate({
$group: {
values: { $push: "$_id" }
}
});
我不确定您是否需要_id 用于组,但如果上述方法不起作用,您可以添加它。我不确定这是否比在您返回搜索后进行按摩更快。
【讨论】: