在 RavenDB 中提取元数据
Extracting meta data in RavenDB
与SQL Server 中的this question 类似,我想查询元数据,但在ravenDB 中。
理想的输出table将是
Column Name | Primary Key | Data Type | Size | Nullability
您可以使用如下查询获取文档的 "schema":
declare function Schema(doc) {
var fields = [];
var keys = Object.keys(doc);
for(var i = 0; i < keys.length; i ++){
fields.push({
Name: keys[i],
Type: typeof doc[keys[i]]
})
}
return { Fields: fields };
}
from Employees as e
select Schema(e)
limit 1
这会给你 JSON 看起来像这样:
{
"Fields": [
{
"Name": "LastName",
"Type": "string"
},
{
"Name": "FirstName",
"Type": "string"
},
{
"Name": "Title",
"Type": "string"
},
{
"Name": "Address",
"Type": "object"
},
{
"Name": "HiredAt",
"Type": "string"
},
{
"Name": "Birthday",
"Type": "string"
},
{
"Name": "HomePhone",
"Type": "string"
},
{
"Name": "Extension",
"Type": "string"
},
{
"Name": "ReportsTo",
"Type": "string"
},
{
"Name": "Notes",
"Type": "object"
},
{
"Name": "Territories",
"Type": "object"
},
{
"Name": "@metadata",
"Type": "object"
},
{
"Name": "New",
"Type": "string"
}
],
"@metadata": {
"@flags": "HasRevisions, HasAttachments, Reverted",
"@id": "employees/8-A",
"@last-modified": "2019-10-23T15:03:03.0396651Z",
"@change-vector": "A:2239343-ZAAsE6haIECPXQA6XsIt5A, A:1887-0N64iiIdYUKcO+yq1V0cPA, A:6214-xwmnvG1KBkSNXfl7/0yJ1A",
"@projection": true,
"@index-score": 0
}
}
请注意,在 RavenDB 中,您实际上并没有架构。不同的文档可能有不同的字段。
根据您要求的复杂性,您可能需要递归到嵌套对象中,例如 Territories
或 Address
.
与SQL Server 中的this question 类似,我想查询元数据,但在ravenDB 中。
理想的输出table将是
Column Name | Primary Key | Data Type | Size | Nullability
您可以使用如下查询获取文档的 "schema":
declare function Schema(doc) {
var fields = [];
var keys = Object.keys(doc);
for(var i = 0; i < keys.length; i ++){
fields.push({
Name: keys[i],
Type: typeof doc[keys[i]]
})
}
return { Fields: fields };
}
from Employees as e
select Schema(e)
limit 1
这会给你 JSON 看起来像这样:
{
"Fields": [
{
"Name": "LastName",
"Type": "string"
},
{
"Name": "FirstName",
"Type": "string"
},
{
"Name": "Title",
"Type": "string"
},
{
"Name": "Address",
"Type": "object"
},
{
"Name": "HiredAt",
"Type": "string"
},
{
"Name": "Birthday",
"Type": "string"
},
{
"Name": "HomePhone",
"Type": "string"
},
{
"Name": "Extension",
"Type": "string"
},
{
"Name": "ReportsTo",
"Type": "string"
},
{
"Name": "Notes",
"Type": "object"
},
{
"Name": "Territories",
"Type": "object"
},
{
"Name": "@metadata",
"Type": "object"
},
{
"Name": "New",
"Type": "string"
}
],
"@metadata": {
"@flags": "HasRevisions, HasAttachments, Reverted",
"@id": "employees/8-A",
"@last-modified": "2019-10-23T15:03:03.0396651Z",
"@change-vector": "A:2239343-ZAAsE6haIECPXQA6XsIt5A, A:1887-0N64iiIdYUKcO+yq1V0cPA, A:6214-xwmnvG1KBkSNXfl7/0yJ1A",
"@projection": true,
"@index-score": 0
}
}
请注意,在 RavenDB 中,您实际上并没有架构。不同的文档可能有不同的字段。
根据您要求的复杂性,您可能需要递归到嵌套对象中,例如 Territories
或 Address
.