mongodb - 是否可以从查询中返回特定值的列表?

标签 mongodb mongodb-query database

我的“组件”集合中有一个文档列表,每个文档都有属性“名称”。例如:

{
     "_id" : "ce83jfieojf8"
     "name": "George"
}

我想编写一个查询,返回组件中所有文档的所有名称值的完整列表。

现在,我可以使用db.components.find({'_id':0, 'name':1}),这将返回如下所示的内容:

{"name" : "George"}
{"name" : "John"}
{"name" : "Paul"}

我可以使用索引和 .name 属性获取这些文档中任何一个的名称。如果我输入

db.components.find({'_id':0, 'name':1})[0].name 

我得到:

George

但是,我想要的是一个将返回的查询:

George 
John 
Paul

我已经浏览了 Mongo 文档,但是当我搜索“返回多个值”或“返回列表”时,我只获得文档列表,而不是这些文档中的值列表。

是否可以做到这一点,或者我需要编写一个单独的函数来单独获取每个值?

非常感谢您的帮助。

最佳答案

假设您的收藏中有以下文档:

{ "_id" : ObjectId("55a7cfeeeb68594275546c76"), "name" : "George" }
{ "_id" : ObjectId("55a7cfeeeb68594275546c77"), "name" : "John" }
{ "_id" : ObjectId("55a7cfeeeb68594275546c78"), "name" : "Paul" }
{ "_id" : ObjectId("55a7cfeeeb68594275546c79"), "name" : "Jack" }
{ "_id" : ObjectId("55a7cfeeeb68594275546c7a"), "name" : "Paul" }
  • 您可以使用cursor.map收集所有名称并将其作为数组返回
db.collection.find().map(function(u){ return u.name })
[ "George", "John", "Paul", "Jack", "Paul" ]
db.collection.distinct('name')
[ "George", "John", "Paul", "Jack" ]

关于mongodb - 是否可以从查询中返回特定值的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31457999/

相关文章:

mongodb - $elemMatch 中的 $or 语句

mongodb - 如何改进 MongoDB 中的地理空间查询

用于选择嵌入对象的 Mongodb 查询

php - 使用 PHP 连接到 MySQL(WAMP) 数据库

node.js - 使用位置运算符的 MongoDB 推送不起作用

java - Spring data mongodb 序列化 InetSocketAddress

sql - 用于练习的其他 SQL Server 示例数据库

iPhone SQLite数据库读写

node.js - 如何使用 Node JS 和 Mongodb 进行加载测试

mongodb - 在 insert_many() 失败后获取插入的 ID