我有一个有架构的集合
{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'的所有文档?
答案 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);