我使用MongoDB数据库作为临时表进行某些导入操作。我希望在数据永久保存到SQL数据库之前对数据执行存储过程。这依赖于在Mongo中使用map来替换int字段中的4个字符。
我不太确定如何在Mongo中执行此操作,但如果这些表在SQL中,则查询将如下所示:
UPDATE data SET number =
IF LEN(number) >= 4 BEGIN
CONCAT(SUBSTRING(number, 1, (LEN(number)-4)), (SELECT replacement FROM mapping WHERE original=SUBSTRING(number, (LEN(number)-4), 4))
END ELSE number
意思是,如果数字是4位或更多,用映射表中的替换替换最后4位数,否则什么都不做。
任何人都可以帮助我将其转换为MongoDB查询(如果相关,我使用C#)?我现在真的迷失了。
答案 0 :(得分:1)
您无法在一个update
查询中执行此操作,但您可以使用JavaScript函数更新必要的项目:
db.data.find().forEach(function (item) {
var numberLength = item.number.length;
if (numberLength >= 4) {
var part1 = item.number.substring(0, numberLength - 4);
var part2 = item.number.substring(numberLength - 4);
var mapping = db.mapping.findOne({ original: part2 });
item.number = part1 + (!!mapping ? mapping.replacement : "");
db.data.save(item);
}
});