Mongodb 批量删除集合中的特殊信件

Mongodb 批量删除集合中的特殊信件,mongodb,mongodb-query,Mongodb,Mongodb Query,编辑: 假设我有一个Mongo数据库和一个集合,我们称之为产品。在这个集合中,我想从某个字段的所有条目中删除所有特殊字符,比如说所有点,比如说价格。 此外,我将如何替换所有对象的信息条目(例如) 我如何通过mongo shell实现这一点 Example: _id: 123324erwerew name: 'moisture cream' price: 30.00 info: 'Good Cream' _id: 343324erwerew name: 'moisture cream two'

编辑:

假设我有一个Mongo数据库和一个集合,我们称之为产品。在这个集合中,我想从某个字段的所有条目中删除所有特殊字符,比如说所有点,比如说价格。 此外,我将如何替换所有对象的信息条目(例如)

我如何通过mongo shell实现这一点

Example:

_id: 123324erwerew
name: 'moisture cream'
price: 30.00
info: 'Good Cream'

_id: 343324erwerew
name: 'moisture cream two'
price: 40.00
info: 'Good Cream also'

假设这两个选项中的信息都应该是:“有史以来最好的奶油”并且两个价格中的点都应该消失

如果您的价格像
30.11
40.11
那么下面的管道更新命令将使价格
成为“3011”
“4011”
,并将信息设置为
有史以来最好的奶油

db.products.updateMany({}, [
    {
        $set: {
            price: {
                $reduce: {
                    input: { $split: [{ $toString: "$price" }, "."] },
                    initialValue: "",
                    in: { $concat: ["$$value", "$$this"] }
                }
            }
        }
    },
    {
        $set: {
            info: "best cream ever"
        }
    }
])
有关价格更新的说明:

  • 价格值转换为字符串
  • 结果字符串按分隔符
  • 然后使用$reduce将结果部分连接回字符串

  • 在mongodb v4.4中,如果您的价格类似于
    30.11
    40.11
    ,则使用操作符可以大大简化此操作,下面的管道更新命令将使价格
    “3011”
    “4011”
    以及将信息设置为
    有史以来最好的奶油

    db.products.updateMany({}, [
        {
            $set: {
                price: {
                    $reduce: {
                        input: { $split: [{ $toString: "$price" }, "."] },
                        initialValue: "",
                        in: { $concat: ["$$value", "$$this"] }
                    }
                }
            }
        },
        {
            $set: {
                info: "best cream ever"
            }
        }
    ])
    
    有关价格更新的说明:

  • 价格值转换为字符串
  • 结果字符串按分隔符
  • 然后使用$reduce将结果部分连接回字符串

  • 在mongodb v4.4中,这在操作员的帮助下大大简化了

    请提供一个示例文档。使用示例和稍微不同的问题更新了价格字段的数据类型是什么?是NumberDecimal,您正在尝试删除小数点吗?字段
    price
    是字符串还是数字。如果是数字,那么数字类型是什么(double.float.NumberDecimal)?如果
    price
    值与
    price:30.00
    类似,则类型必须为string或。请提供示例文档。使用示例和稍微不同的问题更新price字段的数据类型是什么?是NumberDecimal,您正在尝试删除小数点吗?字段
    price
    是字符串还是数字。如果是数字,那么数字类型是什么(double.float.NumberDecimal)?如果
    price
    值与
    price:30.00
    类似,则类型必须为string或。