尝试查询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
我做错了什么?
答案 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} );