Mongo按Json名称搜索

时间:2014-12-05 11:37:31

标签: json mongodb database

我有一个json文档,其结构如下所示:

{
    "125": {
        "name": "sample name one",
        "age" : 22,
    },
    "126": {
        "name": "sample name two",
        "age" : 27,
    },
    "127": {
        "name": "sample name three",
        "age" : 21,
    }
}

我想返回125表示的对象,即以下对象:

{
    "name": "sample name one",
    "age" : 22,
}

我从控制台尝试了以下查询,但我无法得到我需要的结果: db.persons.find({"125": {$exists: true}})

我想知道如何查询数据库以返回我需要的数据。谢谢你的帮助。

2 个答案:

答案 0 :(得分:1)

db.persons.find({"125": {$exists: true}})

将返回整个文档,它具有“125”键,而不仅仅是“125”键。

如果您只需要返回“125”,您应该使用投影,将其作为第二个参数传递以查找:

db.persons.find({"125": {$exists: true}}, {"125": 1})

然后您将获得包含“125”键的文档,没有任何其他键(该文档的_id除外)

要省略文档的_id,您需要使用:

db.persons.find({"125": {$exists: true}}, {"125": 1, _id: 0})

修改

您是否考虑将数组用于具有重复架构的子文档?这将是更自然,惯用,并为您提供一些额外的可能性。

答案 1 :(得分:0)

在使用JSON键/字段/名称的mongo搜索中,使用$exists运算符

db.things.find( { '125' : { $exists : true } } );