pymongo如何查询嵌套文档以忽略键但得到它的值?

时间:2012-07-31 23:28:15

标签: python mongodb pymongo

我在mongoDB中插入的文档格式如下:

{'Name':{'Surname':{'JON':{'AGE':10}}}}

在上面的示例中,我想构建一个查询来忽略'JON'但是获取所有用户的AGE值。

我试过了:

db.names.find({'Name.Surname':{$regex:'.'}}) but didn't work....

我正在寻找的是:

db.names.find({'Name.Surname.<matchanything>.AGE':{$gt:0}})

1 个答案:

答案 0 :(得分:2)

我认为你的文档方案会让你难以查询,即使MongoDB以这种方式支持通配符匹配(目前还没有)。基本上它会归结为进行大量的表扫描。

是否有理由将Age作为姓氏的财产?

另一种方法是使文档结构更符合

{
    "_id" : ObjectId(),
    "Name" : "something",
    "Surname" : "JON",
    "Age" : 10
}

哪种查询会更方便:

db.user.find({"Name":"something"})
db.user.find({"Age":{"$gte":5}})