MongoDB 更新 ObjectId 字段 (MongoDB update ObjectId field)


問題描述

MongoDB 更新 ObjectId 字段 (MongoDB update ObjectId field)

我有一個具有 ObjectId 屬性的文檔。例如下面代碼中的錨字段:

{ "__v" : 0, "_id" : ObjectId("5654d896481c5186ddaf4481"), "anchor" : ObjectId("565480e5481c5186ddaf446c"), "base_url" : "http://example.com"}

我看到了文檔 here 但不清楚如何更新 ObjectId 引用字段。我希望這個引用只指向另一個 anchor 文檔,我可以將 ObjectId 放置為這樣的字符串:

db.categories.update(
   { },
   {
      $set {anchor: "5654d47a481c5186ddaf4479"}
   },
   { multi: true }
)

參考解法

方法 1:

You can use ObjectId():

db.categories.update(
   { },
   {
      $set: { anchor: ObjectId("5654d47a481c5186ddaf4479") }
   },
   { upsert: true }
)

https://docs.mongodb.org/manual/reference/object‑id/#core‑object‑id‑class

The mongo shell provides the ObjectId() wrapper class to generate a new ObjectId,...

(by Sanandreakaty lavallee)

參考文件

  1. MongoDB update ObjectId field (CC BY‑SA 2.5/3.0/4.0)

#mongo-shell #mongoDB






相關問題

Windows 是否有任何 mongo shell 擴展? (Is there any mongo shell extensions for windows?)

獲取查詢中所有文檔的大小 (Get the size of all the documents in a query)

如何從 java 程序運行 mongo 查詢? (How to run a mongo query from java program?)

MongoDB 更新 ObjectId 字段 (MongoDB update ObjectId field)

MongoDB - 將簡單字段更改為對象 (MongoDB - change simple field into an object)

mongoDB aggregate() 在電子郵件對象集合中查找電子郵件時間 (mongoDB aggregate() finding email times in a collection of email objects)

指定在 mongodb .js 腳本中使用哪個數據庫 (Specify which database to use in mongodb .js script)

命令失敗:MongoError:CMD_NOT_ALLOWED:配置文件 (command failed: MongoError: CMD_NOT_ALLOWED: profile)

有沒有辦法在 MongoDB 的一個語句中添加遞增的 id? (Is there a way to add an incrementing id in one statement in MongoDB?)

運行 rs.initiate() 後 mongodb 副本集錯誤“...replSetHeartbeat 需要身份驗證...” (mongodb replica set error "...replSetHeartbeat requires authentication..." after running rs.initiate())

將 mongo shell 連接到受限的 MongoDB Atlas 數據庫? (Connect mongo shell to restricted MongoDB Atlas Database?)

[MongoDB]:更改所有數組字段中的值類型 ([MongoDB]: Changing the type of values in all array fields)







留言討論