如何在MongoDB中仅打印子嵌入文档中的值?
我有以下数据,这是其中一份文件:如何在MongoDB中仅打印子嵌入文档中的值?,mongodb,mongodb-query,Mongodb,Mongodb Query,我有以下数据,这是其中一份文件: { "_id": { "$oid": "607c6b658fedaf104caa78e9" }, "awardYear": "1901", "category": { "en": "Chemistry", "no": "Kjemi",
{
"_id": {
"$oid": "607c6b658fedaf104caa78e9"
},
"awardYear": "1901",
"category": {
"en": "Chemistry",
"no": "Kjemi",
"se": "Kemi"
},
"categoryFullName": {
"en": "The Nobel Prize in Chemistry",
"no": "Nobelprisen i kjemi",
"se": "Nobelpriset i kemi"
},
"prizeAmount": 150782,
"prizeAmountAdjusted": 8567159,
"links": {
"rel": "nobelPrize",
"href": "http://masterdataapi.nobelprize.org/2/nobelPrize/che/1901",
"action": "Get",
"types": "application/json"
},
"laureates": [{
"id": "160",
"knownName": {
"en": "Jacobus H. van 't Hoff"
},
"portion": "1",
"sortOrder": "1"
}]}
我试图在MongoDB Shell上使用点表示法检索名称,代码如下:
db.nobel.find({ "awardYear": '1901' },{
_id : 0,
"laureates.knownName.en": 1
})
我的结果是:
{ "laureates" : [ { "knownName" : { "en" : "Jacobus H. van 't Hoff" } } ] }
我只想知道名字(没有父母):
我还尝试使用(“laureates”=0)排除“laureates”,但我收到了一个路径冲突错误,如果您能帮助我,那就太好了。
我正在使用MongoDB社区服务器4.4.5。
提前感谢大家。演示-
使用$first
db.collection.find(
{ "awardYear": "1901" },
{ _id: 0,"laureates": { $first: "$laureates.knownName.en" } }
)
或者您可以使用@turivishal的评论中提到的
$arrayElemAt
演示-
输出
[
{
"laureates": "Jacobus H. van 't Hoff"
}
]
在您的投影中尝试
{“laureates”:{$arrayElemAt:[“$laureates.knownName.en”,0]}
db.collection.find(
{ "awardYear": "1901" },
{ _id: 0, "laureates": { $arrayElemAt: ["$laureates.knownName.en", 0] } }
)
[
{
"laureates": "Jacobus H. van 't Hoff"
}
]