如何从mongodb中字段中的对象数组中检索部分对象

如何从mongodb中字段中的对象数组中检索部分对象,mongodb,mongoose,mongodb-query,Mongodb,Mongoose,Mongodb Query,我有一个猫鼬模式,比如- db.foo.insert({one:'a',friends:[{two:'b',three:'c'},{two:'d',three:'e'},{two:'f',three:'G'}]}) 现在我想要的是两个只检索'two'部分friends数组 也就是说,我想在friends数组中的每个对象中找到two的所有值的数组 这样的投影在mongodb中是可能的吗- ['b','d','f'] aggregate是您的答案 db.foo.aggregate({"$proj

我有一个猫鼬模式,比如-

db.foo.insert({one:'a',friends:[{two:'b',three:'c'},{two:'d',three:'e'},{two:'f',three:'G'}]})
现在我想要的是两个只检索
'two'
部分
friends
数组 也就是说,我想在
friends
数组中的每个对象中找到
two
的所有值的数组 这样的投影在mongodb中是可能的吗-

['b','d','f']

aggregate
是您的答案

db.foo.aggregate({"$project" : {"two" : "$friends.two"}}).result
还有另一种方法(获取不同的值)

您可以通过以下方式执行此操作:

db.foo.distinct('friends.two')
输出:

[
“b”,
“d”,
“f”
]

@johnyhk我刚刚编辑了这个问题以包含预期的答案。不,它们是唯一的值。我只是往那边插。抱歉,忘了提到earlierIt说错误:未实现Distinct。在try.mongodb.org上。但在我的桌面上运行良好。谢谢你的回答
db.foo.aggregate([      
    {'$project': {  
                    union:{$setUnion:["$friends.two"]}
                 }
    }
]).result;