在創建文檔時,如果我們提供_id
作爲插入語句的一部分,那麼用戶提供的值將由mongodb獲取,因此,我們需要確保_id
應該是唯一值。即使您爲_id重複賦值,也不用擔心,那麼我們會收到錯誤消息。
我有一個名爲計算器樣品收集和具有兩個屬性
db.stackoverflow.insert({ _id:1, movie:"Mission Impossible 1"})
WriteResult({ "nInserted" : 1 })
其文件當我試圖插入具有相同_id則獲得的錯誤信息(錯誤信息相同的文檔,如圖蒙戈殼牌)
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: test.stackove
rflow index: _id_ dup key: { : 1.0 }"
}
})
對於你的情況,如果你擁有電影收藏。我們可以用符合我們要求的方便_id
來改寫收藏。
請注意,更新文檔的_id是不可能的,因爲 _id
相當於RDBMS錶行的主鍵。
因此,對於改變文檔_id值,可以做如下圖所示(創建一個新的文件,並刪除舊文件)
// Find the document and store it in a variable
doc = db.movies.findOne({_id: ObjectId("5dd45467d55f4d2d2a115502")})
// Give a convenient new _id
doc._id = 1
// Insert the document using the new _id
db.movies.insert(doc)
// Now we will be having two documents for the same movie, so remove the old one
db.movies.remove({_id: ObjectId("5dd45467d55f4d2d2a115502")})