MongoDB在更新查询中选择

时间:2013-12-10 18:56:45

标签: c# sql-server mongodb

我使用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#)?我现在真的迷失了。

1 个答案:

答案 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);
    }
});