.NET Core 的 MongoDB 迁移

标签 mongodb asp.net-core .net-core database-migration

我有一个与 mongoDb 一起使用的 .NET Core 项目。 我研究了数据迁移,但没有一种解决方案适合我。

有 MongoMigrations NuGet 包,但它与 .NET Core 不兼容。 目标是有一些方法可以检查当前的数据库版本,如果它不是最新的,则进行某些更新,例如调用某些RemoveUserCollection()方法或类似的方法。

有人遇到同样的问题,或者有更好的解决方案吗? :)

谢谢!

最佳答案

我自己也曾多次偶然发现这个问题,但手动将其烘焙到应用程序启动中或仅使用 JavaScript 编写脚本并像任何其他系统更改一样部署它,需要花费大约 2 分钟的时间。

我有一个类似的 PowerShell 脚本

param([Parameter(Mandatory=$True)][string]$Hostname, [string]$Username = $null, [string]$Password = $null)

if($Username){
    $authParameters = "-u $Username -p $Password --authenticationDatabase admin"
}

Write-Host "Running all migration scripts..."
$scripts = Get-Childitem | where {$_.extension -like '.js'} | foreach { $_.Name }
Invoke-Expression "c:\mongodb\bin\mongo.exe --host $Hostname $authParameters $scripts"

然后我将大量 .js 文件转储到同一目录中。

;
(function () {
    var migration = { _id: ObjectId("568b9e75e1e6530a2f4d8884"), name: "Somekinda Migration (929394)" };

    var testDb = db.getMongo().getDB('test');
    if (!testDb.migrations.count({ _id: migration._id })) {
        testDb.migrations.insert(migration);
        print('running ' + migration.name)

        // Do Work
        testDb.people.find().snapshot().forEach(
            function (alm) {
                testDb.people.save(
                    {
                        modifiedAt: new Date(),
                    });
            }
        )
    }
})();

关于.NET Core 的 MongoDB 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47075733/

相关文章:

objectid 的 mongodb 部分最有可能是唯一的

ruby - 在 mongoid 上提取多个和/或嵌套字段

python - mongo中查询某个时间范围内的数据

c# - ASP.NET 核心 : Accessing appsettings from another project in solution

python - MongoDB 推送到嵌套数组或插入新文档

c# - ASP.NET CORE 版本中的 HttpContext.Current.Request.Form.AllKeys

c# - 如何使 .NET Core 6 顶级语句模板异步?

.net-core - 升级到 macOS Catalina 后为 "zsh: command not found: dotnet-svcutil"

.net - 点网核心vs点网标准

redis - 尝试将 : Changing . NET 标准库的依赖项解析为 NET Core - Microsoft.Extensions.Primitives