通过在mongo中查询嵌套字典从mongodb集合中获取文档

时间:2013-07-08 17:14:37

标签: python mongodb pymongo

我有一个有架构的集合

{user_id:user id, user_details: {name: {age: {profession: {salary: amount}}}}}

样本条目是:

{user_id:001, user_details: {
                             abc:{21:{teacher:{salary:10000}, 
                                      book-seller:{salary:10000}}, 
                                  34:{farmer:{salary:5000}}}, 
                             xyz:{40:{manager:{salary:200000},
                                      asst_manager:{salary:198900}}}
                            }
}
{user_id:002, user_details: {
                             abc:{19:{student:{salary:1000}, 
                                      book-seller:{salary:10000}}, 
                                  34:{farmer:{salary:5000}}}, 
                             xyz:{45:{manager:{salary:200000},
                                      asst_manager:{salary:198900}}}
                            }

}

有没有办法查询用户名为'abc'的所有文档?

2 个答案:

答案 0 :(得分:3)

使用pymongo:

key = 'user_details.{username}'.format(username='abc')
db.collections.find({key: {'$exists': True}})

这使用$exists运算符根据键进行查找。

您必须为每个用户名动态生成'key'变量。

答案 1 :(得分:1)

您可以使用$exists运算符和点符号来执行此操作,但您需要像这样(在shell中)动态构建查询:

var user = 'abc';
var query = {};
query['user_details.' + user] = { $exists: true };
db.coll.find(query);