Mongodb如何查询结果作为一个属性的普通数组

时间:2014-03-31 10:09:40

标签: mongodb

我在mongodb colleciton文件中有:

集合中的文档(每个都有名称属性):

  

[{name:'Alex',..},{name:'Jane',..} ...]

如何查询db以获取结果只是映射name属性:

  

['Ale','Jane',...]

1 个答案:

答案 0 :(得分:1)

您想要使用的是query projections

  

MongoDB中的查询默认返回所有匹配文档中的所有字段。要限制MongoDB发送给应用程序的数据量,请在查询中包含投影。

对于您的示例,您的查询将如下所示:

db.people.find( {}, { "name": 1 } )

这将提取所有文档,但只返回每个文档的name属性(和_id)。要删除_id属性,您还必须明确指定您不需要它:

db.people.find( {}, { "name": 1, "_id": 0 } )

为了检索一个数组中的所有名称,您可以使用forEach函数来汇总数据:

var names = [];
db.people.find( {}, { "name": 1, "_id": 0 } ).forEach( function( doc ){
  names.push( doc.name );
});