【问题标题】:Updating all fields of a mongodb collection with the value of the id field使用 id 字段的值更新 mongodb 集合的所有字段
【发布时间】:2026-02-15 13:25:01
【问题描述】:

我有一个庞大的 mongodb 集合,想将其中一个字段更新为 id 字段的值。

我正在尝试的语法如下:

db.getCollection("products").updateMany(
{},     
{  $set: { ProductId: "$_id" }  },  
{})

然而,这会将值设置为字符串“$_id”。如果我省略引号,我会收到一条错误消息:

2021-02-18T15:55:53.170+0100 E QUERY [js] ReferenceError: $_id is not defined :

【问题讨论】:

标签: mongodb mongodb-query


【解决方案1】:

您好,您可以在 MongoDB 4.2+ 中实现这一点,实际上第二个参数需要包装在一个数组中。 (刚学到新东西)

db.getCollection("products").updateMany(
    {},
    [
        {  $set: { ProductId: "$_id" }  }
    ]
)

【讨论】:

  • 这称为聚合管道更新。 docs.mongodb.com/manual/tutorial/…
  • 谢谢,我是 Mongo DB 的新手,现在正在考虑我可以在工作中改进多少查询。很高兴明天实施这些。哈哈
  • 我有 MongoDB 版本 4.4,但是如果我尝试执行此命令,我会收到一条错误消息:E QUERY [js] 错误:更新操作文档必须包含原子操作符 :-( 所以这不到目前为止似乎是解决方案。
  • @DavidElsner 你在 mongo shell 中试过了吗?
  • 应该是studio 3Ts的问题。就像这里描述的那样:*.com/questions/58955143/… sorry...