首页 > 解决方案 > 使用 updateMany 将新字段添加到从 String 解析为 Int 的 MongoDB 文档

问题描述

在我的 MongoDB 集合中,所有文档都包含一个mileage当前为字符串的字段。使用 PHP,我想添加第二个字段,它包含相同的内容,但作为整数值。诸如如何更改字段类型之类的问题?包含我不想使用 PHP 运行的自定义 MongoDB 代码,以及诸如mongodb php Strings to float values检索所有文档并遍历它们的问题。

有什么方法可以使用\MongoDB\Operation\UpdateMany它,因为这会将所有工作都放在数据库级别?我已经尝试过对静态值进行此操作(例如:将相同的字符串添加到所有文档),但是很难从集合本身中获取要插入的数据。

一些进一步的提示:

标签: phpmongodbmongodb-query

解决方案


您可以$set在 4.2 中这样使用,它支持更新中的聚合管道。

$set阶段创建一个mileageasint基于前一个具有$toInt

db.collection.updateMany(
   <query>,
   [{ $set: { "mileageasint":{"$toInt":"$mileage" }}}],
   ...
)

Php 解决方案(使用此处的示例)

$updateResult = $collection->updateMany(
    [],
    [['$set' => [ 'mileageasint' =>  [ '$toInt' => '$mileage']]]]
);

推荐阅读