私たちがinsert文の一部として_id
を提供した場合、ドキュメントを作成する際に、ユーザが提供する値はmongodbによって取得されます。このアプローチでは、_id
が一意の値である必要があります。 _idの繰り返し値を指定しても、エラーメッセージが表示されます。
私は(エラーメッセージモンゴに示すように、エラーメッセージが表示された場合、私は同じ_idで同じ文書を挿入しようとしている場合はstackoverflowの、その文書は二つの属性
db.stackoverflow.insert({ _id:1, movie:"Mission Impossible 1"})
WriteResult({ "nInserted" : 1 })
を持つという名前のサンプル収集を持っていますシェル)
WriteResult({
"nInserted" : 0,
"writeError" : {
"code" : 11000,
"errmsg" : "E11000 duplicate key error collection: test.stackove
rflow index: _id_ dup key: { : 1.0 }"
}
})
ムービーコレクションを所有している場合のシナリオです。我々は便利な_id
でコレクションを書き直すことができます。
_id
がRDBMSのテーブルの行の主キーに相当するので、文書の_idを更新することは、不可能であることに注意してください。したがって
以下に示すように、文書_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")})
(新しい文書を作成し、古い文書の削除)行うことができます