我有一个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}})
。
我想知道如何查询数据库以返回我需要的数据。谢谢你的帮助。
答案 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 } } );