Mongo查询 - 对象数组 - 仅从元素0获取字段

时间:2018-01-10 11:13:16

标签: mongodb

尝试查询Mongo,并在文档中获取元素0的1个字段,即emails[0].address

这是一个示例(截断的)文档结构:

    { 
    "_id" : "dfadgfe266reh", 
    "emails" : [
        {
            "address" : "email@domain.com", 
            "verified" : false
        }
    ]
}

我的查询(截断)是这样的:

        {
            fields: {
                'emails.0.address': {
                    address: 1
                }
            }
        }

然而,当我运行它时,我得到一个空对象数组,即emails:[{}] 但是如果我将选择器更改为'emails.address'它会给我实际的电子邮件地址 - 问题是我只想要emails[0].address

我做错了什么?

2 个答案:

答案 0 :(得分:0)

您可以在投影中使用$

.find({"emails.address":{$exists:true}}, {"emails.$.address":1})

答案 1 :(得分:0)

要获取所需文档,您需要一个包含两个属性的项目文档。第一个,正如@Veeram所提到的,slices数组,第二个是从the embedded document in the array指定一个属性。见代码:

db.collection.find( {}, { "emails": { $slice: 1 } , "emails.address": 1} );