仅查询Mongodb中的字段名
考虑Mongodb中的一个文档,例如:仅查询Mongodb中的字段名,mongodb,jackson,jsonpath,Mongodb,Jackson,Jsonpath,考虑Mongodb中的一个文档,例如: {name:"Josh","address":{"street_no":34,"district":"Gurgaon","pincode":"1234xyz"}} 如何通过查询获取字段名(而不是值)?可能吗?例如,我需要编写一个查询,返回“姓名”、“地址”、“街道号”、“地区”和“pincode”作为Mongodb文档中的字段。您只能检索值和查询值。您需要对数据进行重组,使其更像这样:{“key”:“street\u no”,“value”:34}。当然
{name:"Josh","address":{"street_no":34,"district":"Gurgaon","pincode":"1234xyz"}}
如何通过查询获取字段名(而不是值)?可能吗?例如,我需要编写一个查询,返回“姓名”、“地址”、“街道号”、“地区”和“pincode”作为Mongodb文档中的字段。您只能检索值和查询值。您需要对数据进行重组,使其更像这样:
{“key”:“street\u no”,“value”:34}
。当然,这可能会极大地影响您的索引和您可能想要执行的其他搜索(当然也会降低文档结构的可读性)
除非您有数百个字段和一个非常大的文档,否则我建议您只返回值,而不是试图让MongoDB只返回字段名
如果您确实需要字段名,您可以根据需要将它们存储在一个数组中,作为文档的一部分(如果键/值
建议似乎不符合您的其他要求)。虽然它是双重存储,但这种技术有时在MongoDB中是必要的
您可以始终使用
$exists
()检查给定字段的存在性。获取架构的另一个有趣的方法是将文档的元数据存储在其自身中:
e、 g
优点:
您可以在查询时轻松地从文档中排除元数据:
e、 g.db.collection.find({},{metaData:0})
缺点:
数据库中插入了大量重复数据
注意:只有当您有固定模式时,这才有用。您只能检索值和查询值。您需要将数据重组为{“key”:“street_no”,“value”:34}`对于您的查询类型,您最好在这里存储一个键值
{
_id:1
field1:'test'
field2:[]
field:3:{}
metaData:{
field1:'string'
field1:'Array'
field3:'Object'
}
}