Mongo:只从嵌套对象中选择一个字段
问题描述:
在mongo中,我存储具有字段“titleComposite”的对象。此字段包含标题对象的数组,像这样:Mongo:只从嵌套对象中选择一个字段
"titleComposite": [
"0": {
"titleType": "01",
"titleText": "Test cover uploading"
}
]
我perfoming查询,我想为返回值只接收“titleText”值。这里是我的查询的示例:
db.onix_feed.find({"addedBy":201, "mediaFileComposite":{$exists:false}}, {"isbn13":1,"titleComposite.titleText":1})
在结果我看到这样
{
"_id" : ObjectId("559ab286fa4634f309826385"),
"titleComposite" : [ { "titleText" : "The Nonprofit World" } ],
"isbn13" : "9781565495296"
}
值请问有什么办法可以摆脱“titleComposite”包装对象,并且只接收titleText?例如,只拿第一个元素的titleText?
希望得到任何帮助
答
可以MongoDB的aggregation实现你预期的结果。重新安排您的查询如下...
db.onix_feed.aggregate([
{
$match: {
$and: [
{"addedBy":201},
{"mediaFileComposite":{$exists:false}}
]
}
},
{
$project : { titleText: "$titleComposite.titleText",
"isbn13" : 1 }
}
])
谢谢你的回答。我尝试了你的代码,但是我仍然在resutls中看到“titleComposite”。 {“_id”:ObjectId(“559ab286fa4634f309826381”),“titleComposite”:{“titleText”:“全球能源的地缘政治”},“isbn13”:“9781626374331”}。我想要的结果看起来像{“_id”:ObjectId(“559ab286fa4634f309826381”),“titleText”:“全球能源的地缘政治”,“isbn13”:“9781626374331”} – Tamara
我刚刚编辑了我的答案,请尝试更新一个 – gypsyCoder
我仍然看到“titleComposite”:/我使用Mongo 2.6.0如果它很重要 – Tamara