我知道如何通过powershell导入json文件,但是是否可以通过powershell导入json文件,其中包含Guids作为ID?
C#将Guid转换为mongodb类型的LUUID。
例如我想与Mongo2go进行集成测试 - 我想将json文件作为样本数据导入。 json文件应该如何显示,以便mongoimporter能够理解字段ID来自LUUID?
我试过跟随Jsons:
选项1
{
"_id": LUUID("8a95184b-5125-4b0d-914e-8e4650f19b5c"),
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
1选项
{
"_id": $LUUID("8a95184b-5125-4b0d-914e-8e4650f19b5c"),
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
2选项
{
"_id": {LUUID : "8a95184b-5125-4b0d-914e-8e4650f19b5c"},
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
选项4
{
"_id": {$LUUID : "8a95184b-5125-4b0d-914e-8e4650f19b5c"},
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
选项5
{
"_id": {LUUID : {"8a95184b-5125-4b0d-914e-8e4650f19b5c"}},
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
选项6
{
"_id": {$LUUID : {"8a95184b-5125-4b0d-914e-8e4650f19b5c"}},
"Date" : {$date: "2014-03-20T03:09:27.000+01:00"},
"Name" : Foo
}
但他们都没有工作。
答案 0 :(得分:0)
找到答案的最简单方法是使用mongoexport
导出数据并检查输出格式。结果证明格式不是很简单:
“_ id”:{“$ binary”:“GNIkQiYyu0CNNRsRHBQqLA ==”,“$ type”:“03”}
检索此数据以跟踪GUID:{4224d218-3226-40bb-8d35-1b111c142a2c}
。该Base64字符串被解码为Guid.ToByteArray()
方法
18 d2 24 42 26 32 bb 40 8d 35 1b 11 1c 14 2a 2c
现在,当您了解格式时,您可以轻松构建所需的json。但是,使用该数据填充集合并使用mongoexport导出它似乎要容易得多。
答案 1 :(得分:0)
这里有一些代码可以为您提供帮助。
希望它可以帮助某人...
function ParseNUUIDs($content){
$matches = ([regex]'(NUUID\(\")(.*)(\"\))').Matches($content);
Foreach($m in $matches){
$guid = [GUID]$m.Groups[2].Value
$bytes = $guid.ToByteArray()
$b64 = [Convert]::ToBase64String($bytes)
$r = "{""" + "$" + "binary"": """ + $b64 + """, """ + "$" + "type"": ""03""}"
$content = $content.replace($m.Value, $r)
}
return $content
}
function Parse($filename){
$content = Get-Content $filename -Raw
$content = ParseNUUIDs $content
$tempFile = New-TemporaryFile
$content | Out-File -FilePath $tempFile -Encoding utf8
return $tempFile
}