仅查询Mongodb中的字段名称

时间:2013-09-16 11:18:53

标签: mongodb jackson jsonpath

考虑Mongodb中的文档,例如:

{name:"Josh","address":{"street_no":34,"district":"Gurgaon","pincode":"1234xyz"}}

如何通过查询获取字段名称(而不是值)?可能吗?例如,我需要编写一个查询,它将“name”,“address”,“street_no”,“district”和“pincode”作为Mongodb文档中的字段返回。

2 个答案:

答案 0 :(得分:1)

获取模式的另一种有趣方式可能是将文档的元数据存储在其中:

e.g。

{
    _id:1
     field1:'test'
     field2:[]
     field:3:{}
     metaData:{
           field1:'string'
           field1:'Array'
           field3:'Object'

     }

}

优点:

您可以在查询时轻松地从文档中排除元数据:

e.g。 db.collection.find({},{metaData:0})

缺点:

数据库中插入了大量重复数据。

P.S。 :仅当您有修复架构时,这才有用。

答案 1 :(得分:0)

您只能检索值并查询值。您需要重新构建数据,使其更像这样:{"key": "street_no", "value": 34}。当然,这可能会极大地影响您可能想要做的索引和其他搜索(当然也会降低文档结构的可读性)。

除非你有数百个字段和一个非常大的文档,否则我建议你只返回值,而不是试图让MongoDB返回字段名称。

如果您确实需要字段名称,可以根据需要将它们存储在数组中作为文档的一部分(如果key/value建议似乎不符合您的其他要求)。虽然它是双重存储,但MongoDB有时需要这种技术。

您始终可以使用$existsdocumentation)检查指定字段是否存在。

相关问题