我需要一个数组,其中包含我的MongoDB数据库集合及其具有数据类型的字段。
数组是这样的:
我知道在SQL Server中可以使用INFORMATION_SCHEMA
访问表字段信息,但是我不知道MongoDB中的情况。
非常感谢。
答案 0 :(得分:0)
第一件事:MongoDB是无模式的,没有表。在MongoDB中,每个集合可以具有非常不同类型的项目。您可以将两个完全不同的项目存储在同一集合中。但是,如果确定它具有相同的结构,则可以使用一些技巧来获取数据。
使用以下代码获取所有字段名称:
db.collection.aggregate([
{
$project: {
data: {
$objectToArray: "$$ROOT"
}
}
},
{
$project: {
data: "$data.k"
}
},
{
$unwind: "$data"
},
{
$group: {
_id: null,
keys: {
$addToSet: "$data"
}
}
},
{
$unwind: "$keys"
},
{
$project: {
_id: 0,
key: "$keys"
}
}
])
给出的结果为:
[
{
"key": "egg"
},
{
"key": "type"
},
{
"key": "hello"
},
{
"key": "_id"
}
]
您可以使用以下结果通过聚合获取每个字段的类型:
db.Garments.aggregate(
{ "$project": { "fieldType": { "$type": "$_id" } } } //use fieldName from previous results
)
返回如下内容:
{
"_id" : ObjectId("4c0ec11e8fd2e65c0b010000"),
"fieldType" : "string"
}
还有其他使用Map-Reduce函数的方法,这里是一个示例:Using map/reduce for mapping the properties in a collection