我正在尝试在MongoDb中使用“updateMany”语句来更新此表中的行,并收到“意外令牌”消息。我在这里做错了什么?

I'm attempting an "updateMany" statement in MongoDb to update rows in this table, and get an "Unexpected token" message. What am I doing wrong here?

提问人:mwestley61 提问时间:10/11/2023 更新时间:10/11/2023 访问量:13

问:

下面是 MongoDb 表: 'email_status' 集合

这是我尝试使用“updateMany”命令:

db.getCollection('email_status').updateMany({
   SentOn: {
       $gte: ISODate("2010-01-01T00:00:00.000Z"),
       $lt: ISODate("2023-10-31T00:00:00.000Z")
    }, 
    "EmailMessage.ReplyAddress.Address": {$eq: "[email protected]"},
    $set: {EmailMessage.ReplyAddress.Address: "[email protected]", EmailMessage.ReplyAddress.DisplayName: "My Name"}
    })

我尝试以多种不同的方式修改 $set: 语句,但仍然没有得到有效的更新语句。

这是我在上面的代码中得到的错误:

Error: Line 7: Unexpected token .
mongodb mongodb-query 语法错误

评论

0赞 Wernfried Domscheit 10/11/2023
请不要粘贴屏幕截图,请使用格式化文本。查看 meta.stackoverflow.com/q/285551

答:

0赞 Wernfried Domscheit 10/11/2023 #1
  • 如果字段名称包含点 (.)

  • 不需要(你可以使用它,但它是额外的写作)$eq

  • 您错过了用于分隔过滤器和更新卷括号:

    db.collection.updateMany(filter, update, options)

会是这样的:

db.getCollection('email_status').updateMany(
   {
      SentOn: {
         $gte: ISODate("2010-01-01T00:00:00.000Z"),
         $lt: ISODate("2023-10-31T00:00:00.000Z")
      },
      "EmailMessage.ReplyAddress.Address": "[email protected]"
   },
   {
      $set: {
         "EmailMessage.ReplyAddress.Address": "[email protected]",
         "EmailMessage.ReplyAddress.DisplayName": "My Name"
      }
   }
)