수색…
비고
가장 어려운 부분은 하위 문서 를 만들지 않은 문서에 하위 문서 를 첨부하는 것입니다. 하위 문서 가 필요한 경우 루프를 변수로 루프하고 $doc2.add("Key", "Value")
사용하여 반복해야합니다. $doc2.add("Key", "Value")
를 사용하여 인덱스와 함께 foreach
현재 배열을 사용합니다. 이렇게하면 "Tags" = [MongoDB.Bson.BsonDocument] $doc2
에서 볼 수있는 것처럼 두 줄로 된 하위 문서가 만들어집니다.
PowerShell을 사용하여 C # 드라이버 1.7을 사용하는 MongoDB
가상 머신에서 모든 세부 사항을 쿼리하고 MongoDB로 업데이트해야합니다.
Which require the output look like this.
{
"_id" : ObjectId("5800509f23888a12bccf2347"),
"ResourceGrp" : "XYZZ-MachineGrp",
"ProcessTime" : ISODate("2016-10-14T03:27:16.586Z"),
"SubscriptionName" : "GSS",
"OS" : "Windows",
"HostName" : "VM1",
"IPAddress" : "192.168.22.11",
"Tags" : {
"costCenter" : "803344",
"BusinessUNIT" : "WinEng",
"MachineRole" : "App",
"OwnerEmail" : "[email protected]",
"appSupporter" : "Steve",
"environment" : "Prod",
"implementationOwner" : "[email protected]",
"appSoftware" : "WebServer",
"Code" : "Gx",
"WholeOwner" : "[email protected]"
},
"SubscriptionID" : "",
"Status" : "running fine",
"ResourceGroupName" : "XYZZ-MachineGrp",
"LocalTime" : "14-10-2016-11:27"
}
나는 Powershell에 3 세트의 배열을 가지고있다.
$MachinesList # Array
$ResourceList # Array
$MachineTags # Array
pseudo code
$mongoDriverPath = 'C:\Program Files (x86)\MongoDB\CSharpDriver 1.7';
Add-Type -Path "$($mongoDriverPath)\MongoDB.Bson.dll";
Add-Type -Path "$($mongoDriverPath)\MongoDB.Driver.dll";
$db = [MongoDB.Driver.MongoDatabase]::Create('mongodb://127.0.0.1:2701/RGrpMachines');
[System.Collections.ArrayList]$TagList = $vm.tags
$A1 = $Taglist.key
$A2 = $Taglist.value
foreach ($Machine in $MachinesList)
{
foreach($Resource in $ResourceList)
{
$doc2 = $null
[MongoDB.Bson.BsonDocument] $doc2 = @{}; #Create a Document here
for($i = 0; $i -lt $TagList.count; $i++)
{
$A1Key = $A1[$i].ToString()
$A2Value = $A2[$i].toString()
$doc2.add("$A1Key", "$A2Value")
}
[MongoDB.Bson.BsonDocument] $doc = @{
"_id"= [MongoDB.Bson.ObjectId]::GenerateNewId();
"ProcessTime"= [MongoDB.Bson.BsonDateTime] $ProcessTime;
"LocalTime" = "$LocalTime";
"Tags" = [MongoDB.Bson.BsonDocument] $doc2;
"ResourceGrp" = "$RGName";
"HostName"= "$VMName";
"Status"= "$VMStatus";
"IPAddress"= "$IPAddress";
"ResourceGroupName"= "$RGName";
"SubscriptionName"= "$CurSubName";
"SubscriptionID"= "$subid";
"OS"= "$OSType";
}; #doc loop close
$collection.Insert($doc);
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow