考慮這個MongoDB的文件:Mongodb:如何從數組中檢索元素?
{
"_id:"0,
"firstname":"Tom",
"profiles" : [
{
"profile_name": "tom",
"reward_programs:[
{
'program_name':'American',
'username':'tomdoe',
},
{
'program_name':'Delta',
'username':'tomdoe',
}
]
"settings": {
'auto_update': "False"
}
},
{
"profile_name": "harry",
"reward_programs:[
{
'program_name':'American',
'username':'car',
'account':'train',
},
{
'program_name':'Delta',
'username':'harrydoe',
}
]
"settings": {
'auto_update': "False"
}
}
]
}
我怎麼會只檢索 '設置' 字典用於特定配置文件的名字嗎?在這個例子中我們使用'harry'。我曾嘗試:
result = users.find_one({'_id': request._id, 'profiles.profile_name': 'harry'}, {'_id': 0, 'profiles.$.settings': 1})
但這檢索PROFILE_NAME的整個詞典: '哈利'
{
'profiles':
{
"profile_name": "harry",
"reward_programs:[
{
'program_name':'American',
'username':'car',
'account':'train',
},
{
'program_name':'Delta',
'username':'harrydoe',
}
]
"settings": {
'auto_update': "False"
}
}
}
我寧願得到的結果
{
"profiles" : [
{
"settings": {
'auto_update': "False"
}
}
]
}
而且如果夠簡單,我甚至會更喜歡:
{
"settings": {
'auto_update': "False"
}
}
我明顯有我的投影搞砸了,但我不知道如何解決它。建議?
我希望不要使用聚合框架。但如果這是唯一的方式。你知道什麼會更快,使用聚合框架還是隻做我所做的,並從結果字典中手動提取「設置」? – 2014-09-27 22:34:21