我在该集合中有以下内容:
{
"Tom": {
"age": 20,
"address": "xxx"
},
"John": {
"age": 23,
"address": "xxx"
},
...
}
如何在mongodb shell或其他软件中编写命令,以查找年龄大于N的人的地址?
答案 0 :(得分:0)
我建议您更改架构并将文档存储在以下结构中:
db.t.insert([{
"name":"Tom",
"age":20,
"address":"address1"
},
{
"name":"John",
"age":23,
"address":"address2"
}])
这使得查询非常简单直接:
db.t.find({"age":{$gt:20}})
当您拥有文档时,密钥是高度可变的数据(names
),动态查询几乎不可能。您可以使用aggregation framework
查询它,但这需要付出代价。只是为了记录,我会将聚合查询发布到您当前的文档结构。
var age = 20;
db.t.aggregate([
{$redact:{$cond:[{$gt:[{$ifNull:["$age",age+1]},age]},
"$$DESCEND","$$PRUNE"]}}
])