0

我有一个包含架构的集合

{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”的所有文档?

4

2 回答 2

3

使用 pymongo:

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

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

您必须为每个用户名动态生成“密钥”变量。

于 2013-07-09T16:40:08.657 回答
1

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

var user = 'abc';
var query = {};
query['user_details.' + user] = { $exists: true };
db.coll.find(query);
于 2013-07-09T16:39:06.960 回答