gpt4 book ai didi

c# - PowerShell 与 MongoDB C# 驱动程序的方法不兼容?

转载 作者:可可西里 更新时间:2023-11-01 09:08:50 25 4
gpt4 key购买 nike

由 C# 泛型引起的最新 MongoDB 驱动程序问题:

Cannot find an overload for "GetCollection" and the argument count: "1".

我可能可以在没有泛型的情况下使用其他 GetCollection 方法,但我不知 Prop 体怎么做。

下面发布的答案指出了一些很好的信息,但不幸的是,提供的代码与我已经尝试过的代码相同,但无法正常工作。

这是我想做的:

我想使用 PowerShell 创建一些文档。我现在面临的问题似乎是“GetCollection”无法正常工作。我认为这与 Powershell 中缺乏对泛型的支持有关。无论如何,我找到了一些 CmdLets 来运行通用方法。但我认为这会使代码过于复杂。有办法解决这个问题吗?

我看到还有其他不基于 C# 泛型的 GetCollection 方法,但我还不明白如何在 PowerShell 中使用它们。

Powershell 异常:找不到“GetCollection”的重载和参数计数:“1”

# Mongo DB driver
Add-Type -Path 'CSharpDriver-2.0.1\MongoDB.Bson.dll'
Add-Type -Path 'CSharpDriver-2.0.1\MongoDB.Driver.dll'

# Conncetion to MongoDB
$connectionString = "mongodb://localhost:27018"
$db = "TestDB"
$collection = "Test"


function Get-MongoDBCollection ($connectionString, $db, $collection)
{
$mongoClient = New-Object MongoDB.Driver.MongoClient($connectionString)
$mongoDatabase = $mongoClient.GetDatabase($db)
$mongoCollection = $mongoDatabase.GetCollection($collection)
return $mongoCollection
}


# Connect to MongoDB and get collection
$mongoCollection = Get-MongoDBCollection $connectionString $db $collection

上面列出的代码是从一个较早的 SO 问题中复制(并稍作更改)的:Powershell Mongodb Authentication

关于如何做到这一点有什么建议吗?我假设 SO 中列出的代码基于较早的驱动程序版本。我认为这就是它不再起作用的原因。

PowerShell 控制台上的完整异常:

Cannot find an overload for "GetCollection" and the argument count: "1".
At F:\PowerShell\CreateDB.ps1:31 char:3
+ $mongoCollection = $mongoDatabase.GetCollection($collection)
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [], MethodException
+ FullyQualifiedErrorId : MethodCountCouldNotFindBest

最佳答案

我希望这仍然能有所帮助,这对我适用于最新的 C# 驱动程序和当前的 MongoDB RC-4。

function Get-MongoDBCollection {
Param(
$database,
$CollectionName,
$settings = $null, #[MongoDB.Driver.MongoCollectionSetting]
$returnType = [PSOBJECT]
)
$method = $database.GetType().GetMethod('GetCollection')
$gericMethod = $method.MakeGenericMethod($returnType)
$gericMethod.Invoke($database,[object[]]($CollectionName,$settings))
}
$Collection = Get-MongoDBCollection $database 'test'
# or
$Collection = Get-MongoDBCollection $database 'test' -returnType ([MongoDB.Bson.BsonDocument])

关于c# - PowerShell 与 MongoDB C# 驱动程序的方法不兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31878209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com