Mongodb 从子文档数组中仅返回匹配的子文档

Mongodb 从子文档数组中仅返回匹配的子文档,mongodb,mongodb-query,Mongodb,Mongodb Query,我试图只返回具有匹配电子邮件的子文档。我相信我已经按照文件上说的做了。以下是我正在尝试的: function lookupReferral(email) { return getConnection().then(db => db.collection('Referrals').findOne( { emails: {$elemMatch: {name: email}} }, { "em

我试图只返回具有匹配电子邮件的子文档。我相信我已经按照文件上说的做了。以下是我正在尝试的:

function lookupReferral(email) {
    return getConnection().then(db => db.collection('Referrals').findOne(
        {
            emails: {$elemMatch: {name: email}}
        },
        {
            "emails.$": 1 
        }
    ));
}
下面是一个文档示例(为了简洁起见,我减少了电子邮件数组):

出于某种原因,它返回null(我想这意味着它不存在?),但是如果我删除了我特别想要的内容,那么我将返回整个文档。

您可以尝试此方法

db.collection.find({
  emails: {
    $elemMatch: {
      name: "a@ddd.dpp"
    }
  }
},
{
  emails: {
    $elemMatch: {
      name: "a@ddd.dpp"
    }
  }
})

请参阅

db.collection('refererals').findOne({emails:{$elemMatch:{name:}abc@gmail.com}},{电子邮件:{$elemMatch:{name:abc@gmail.com“}}})
试试hisnop,不行。当我使用存在于子文档{emails:{$elemMatch:{name:}中的电子邮件时,仍然返回nullazzz@zzz.dk{}},{emails{$elemMatch:{name:azzz@zzz.dk“}}}我试过了,没用。看来我的问题不在这个问题上,那么…我的确切想法。好工具。:)
db.collection.find({
  emails: {
    $elemMatch: {
      name: "a@ddd.dpp"
    }
  }
},
{
  emails: {
    $elemMatch: {
      name: "a@ddd.dpp"
    }
  }
})