sql - 我如何为 mongodb(cmd) "Update Doctors Set Talent=Talent.Replace(" ","&").ToLower()" 创建这个查询
问题描述
我有很多数据,所以我用 windows cmd 编写,我的查询。
我以这种方式使用 mssql
Update Doctors Set Talent=Talent.Replace(" ","&").ToLower()
如何为 mongodb 创建?
解决方案
如果您的 MongoDB 版本至少为 4.2,如果您的Talent
属性是单个字符串值,则可以将 updateMany 与单阶段聚合管道一起使用:
db.Doctors.updateMany(
{},
[{
$set: {
Talent: {
$toLower: { // Make it lowercase
$substr: [ // Remove the initial '&' that got added while putting it back together
{
$reduce: {
input: { $split: ['$Talent', ' ']}, // Take it apart
initialValue: '',
in: { $concat: [ '$$value', '&', '$$this']} // Put it back together with '&' in place of ' '
}
},
1,
-1
]
}
}
}
}
])
如果你的Talent
属性是一个字符串数组,你还需要映射它:
db.Doctors.updateMany(
{},
[{
$set: {
Talent: {
$map: {
as: 'singleTalent',
input: '$Talent',
in: {
$toLower: {
$substr: [
{
$reduce: {
input: { $split: [ "$$singleTalent", ' ']},
initialValue: '',
in: { $concat: [ '$$value', '&', '$$this']}
}
},
1,
-1
]
}
}
}
}
}
}
])
推荐阅读
- html - HTML 站点中的根相关链接,可在本地和 Web 上运行
- c# - C# 并行任务库:我可以依靠 task.ContinueWith() 延续来始终被调用吗?
- android - 如何解析json对象内的json数组?
- python - 我想在 for 循环中减去 3D 数组
- javascript - sweetalert.js 行为不正常
- php - 如果从源代码安装但使用 yum 则 PHP 不起作用
- visual-studio - 以编程方式设置 Visual Studio 的“调试源文件”路径
- mongodb - 如何使用多个集合获取未映射的值
- testing - Botium 的 Twitter 连接器
- ios - 如何在 Web 服务响应中隐藏按钮插座?