MongoDB Shell-向现有字段中的所有文档添加新字段

MongoDB Shell-向现有字段中的所有文档添加新字段,mongodb,mongodb-query,Mongodb,Mongodb Query,我想为集合中的所有现有文档创建一个TTL,我们在所有文档中都有一个字符串类型的字段-“OrigDate”:“2020-03-24” 现在,我想在此字段的基础上添加另一个字段“updatedAt”,我在mongo shell中尝试了以下内容,但没有成功- db.SHOP.update( {}, { $set:{ "updatedAt": { "$toDate": "$OrigDate"} } }, false,

我想为集合中的所有现有文档创建一个TTL,我们在所有文档中都有一个字符串类型的字段-
“OrigDate”:“2020-03-24”

现在,我想在此字段的基础上添加另一个字段“updatedAt”,我在mongo shell中尝试了以下内容,但没有成功-

db.SHOP.update(
    {},
    {
     $set:{
            "updatedAt": { "$toDate": "$OrigDate"}
        }
    },
    false,
    true
)
这会出现以下异常情况-“updatedAt.$toDate”中以美元($)为前缀的字段“$toDate”对存储无效


请帮助使用聚合从现有字段值生成新字段,然后将其更新到集合。必须使用聚合引用集合文档中的现有字段

db.test.aggregate( [
  { $addFields: { updatedAt: { "$toDate": "$OrigDate"} } }
] ).forEach( doc => db.test.updateOne( { _id: doc._id }, { $set: { updatedAt: doc.updatedAt } } ) )
以下更新接受聚合管道以指定要应用于集合文档的修改:。注意:此功能仅适用于MongoDB 4.2版或更高版本

db.test.updateMany(
  { },
  [
      { $set: { updatedAt: { "$toDate": "$OrigDate"} } }
  ]
)

使用聚合从现有字段值生成新字段,然后将其更新到集合。必须使用聚合引用集合文档中的现有字段

db.test.aggregate( [
  { $addFields: { updatedAt: { "$toDate": "$OrigDate"} } }
] ).forEach( doc => db.test.updateOne( { _id: doc._id }, { $set: { updatedAt: doc.updatedAt } } ) )
以下更新接受聚合管道以指定要应用于集合文档的修改:。注意:此功能仅适用于MongoDB 4.2版或更高版本

db.test.updateMany(
  { },
  [
      { $set: { updatedAt: { "$toDate": "$OrigDate"} } }
  ]
)

updatedAt
中,是否要存储当前日期或任何其他精确日期?我要使用字符串类型的“OrigDate”项中可用的数据。我想使用$toDate()将其转换为日期。您必须使用聚合来引用现有字段。如果您使用的是MongoDB 4.2版,则可以在
update
方法中使用聚合。在
updatedAt
中,您想存储当前日期或任何其他精确日期吗?我想使用字符串类型的“OrigDate”项中可用的数据。我想使用$toDate()将其转换为日期。您必须使用聚合来引用现有字段。如果您使用的是MongoDB 4.2版,那么可以在
update
方法中使用聚合。