interrogation 1) Voici mon schéma:Powershell MongoDB
{
"_id" : ObjectId("53f4db1d968166157c2d57ce"),
"init" : "SJ",
"name" : "Steve Jobs",
"companies" : [
{
"_id" : ObjectId("53f4db1d968166157c2d57cf"),
"ticker" : "AAPL",
"compname" : "Apple"
},
{
"_id" : ObjectId("53f4db1d968166157c2d57d0"),
"ticker" : "MSFT",
"compname" : "Microsoft"
},
{
"_id" : ObjectId("53f4db1d968166157c2d57d1"),
"ticker" : "ABC",
"compname" : "iTunes"
},
{
"_id" : ObjectId("53f4db1d968166157c2d57d2"),
"ticker" : "DEF",
"compname" : "iPad Mini"
}
]
}
J'essaie d'obtenir une liste des compnames, en utilisant Powershell & MongoDB. Voici ce que j'ai jusqu'à présent:
$databaseName = "CompanyInfo"
$collectionName = "comps"
$client = New-Object -TypeName MongoDB.Driver.MongoClient -ArgumentList "mongodb://localhost:27017"
$server = $client.GetServer()
$database = $server.GetDatabase($databaseName)
$collection = $database.GetCollection($collectionName)
$query['init'] = "SJ"
$results = $collection.FindOne($query)
foreach ($result in $results) {
write-host $result["companies.ticker"] /// Doesn't show me any records
}
Ceci ne me montre aucun enregistrement. Comment afficher company.ticker info où init = "SJ"?
2) BTW, je reçois l'erreur suivante après
$query['init'] = "SJ"
erreur
Cannot index into a null array.
At line:9 char:1
+ $query['init'] = "SJ"
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : NullArray
Toutes les idées pourquoi? Je n'ai que l'index standard de MongoDB, qui est sur "_id", rien d'autre. Mon script PowerShell fonctionne toujours mais je suis curieux de savoir pourquoi j'ai cette erreur.
[UPDATE Partie 2] Merci à @ arco444, je ne reçois erreur dans la partie 2. Voici mon code révisé:
$query = @{'init' = "SJ"}
$collection.FindOne([MongoDB.Driver.QueryDocument]$query)
Mais je dois effectivement aider à la partie 1 - qui consiste à afficher seulement les tickers de l'entreprise pour un init particulier. Des idées sur celui-là?
[RÉPONSE Partie 1] Merci encore à @ arco444 de m'avoir indiqué le bon chemin. Après quelques bricolages, j'ai compris ce qui me manquait. Voici mon code mis à jour:
$databaseName = "CompanyInfo"
$collectionName = "comps"
$client = New-Object -TypeName MongoDB.Driver.MongoClient -ArgumentList "mongodb://localhost:27017"
$server = $client.GetServer()
$database = $server.GetDatabase($databaseName)
$collection = $database.GetCollection($collectionName)
$query = new-object MongoDB.Driver.QueryDocument("init","SJ") /// Updated
$results = $collection.FindOne($query)
foreach ($result in $results["companies"]) { /// Updated
write-host $result["ticker"] /// Updated
}
Merci. Cela a éliminé cette erreur. Mais pourriez-vous faire la lumière sur la façon d'afficher les tickers de l'entreprise en utilisant PowerShell? –
@inquisitive_one Avez-vous mis à jour votre réponse? – arco444