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

时间:2014-12-22 16:30:37

标签: mongodb mongoose mongodb-query

我有一个像 -

这样的猫鼬模式
db.foo.insert({one:'a',friends:[{two:'b',three:'c'},{two:'d',three:'e'},{two:'f',three:'G'}]})

现在我想要的是两个只检索'two'数组的friends部分 那就是我想在two数组中的每个对象中找到friends的所有值的数组 在mongodb中这样的投影是可能的,在输出中看起来像 -

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

2 个答案:

答案 0 :(得分:4)

aggregate是您的答案

db.foo.aggregate({"$project" : {"two" : "$friends.two"}}).result

还有另一种方法(获得不同的值)

db.foo.aggregate([      
    {'$project': {  
                    union:{$setUnion:["$friends.two"]}
                 }
    }
]).result;

答案 1 :(得分:4)

您可以使用distinct执行此操作:

 
 db.foo.distinct('friends.two')

输出:

[
  "b",
  "d",
  "f"
]