从子文档查询mongodb返回一级的字段

时间:2017-09-16 06:34:10

标签: mongodb mongoose mongodb-query

我试图在我的子文档查询中返回一个级别的字段。我的架构是:

profile:{  
    contacts:[{
        first_name:'Tom',
        last_name:'Smith',
        shared:[{
              owner_id:'something',
              other_data:'something'
        }]
    },
    {
        //.... more contacts
    }]
}

如果我通过匹配“共享”子文档中的某些内容来编写查询以获取特定联系人,则可以访问子文档中的字段。

我的问题是我想根据共享子文档中的owner_id搜索联系人,但我想将'first_name'和'last_name'返回一级。

要查询子文档,我将执行以下操作:

db.profile.find({'contacts.shared':{ower_id:'something},{'first_name':1, 'last_name':1}})

不返回父级中的字段。

你如何提高水平以获得这些领域?

1 个答案:

答案 0 :(得分:1)

试试这个

db.people.aggregate([
{$unwind:'$profile.contacts'},
{$unwind:'$profile.contacts.shared'},
{$match:{
    'profile.contacts.shared.owner_id':"1"}
},{
    $group:{
        _id:null,
        fname:{$first:"$profile.contacts.first_name"},
        lname:{$first:"$profile.contacts.last_name"}
    }
}
  ])