Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在MongoDB中仅打印子嵌入文档中的值?_Mongodb_Mongodb Query - Fatal编程技术网

如何在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"
  }
]