MongoDB 要素を配列に追加
この記事では、MongoDB の配列に追加するさまざまな方法について説明します。
MongoDB の配列に追加
$push
演算子を使用して配列に値を追加する
$push
演算子は、ドキュメント内の配列フィールドの内容を更新するために MongoDB が提供するさまざまな配列更新演算子の 1つです。 $push
演算子は、特定の値を配列に追加できます。
$push
演算子は、配列の末尾にアイテムを追加します。 $push
演算子で指定されたフィールドが配列でない場合、このアクションは失敗します。
構文:
{
$push: {
<field1>: <value1>,
<field2>: <value2>,
...
}
}
この場合、field
は、配列、埋め込み/ネストされたドキュメント、またはドット表記を使用して指定できます。 必要に応じて、この演算子を update()
や findAndModify()
などのメソッドと組み合わせることができます。
$push
演算子は、指定されたフィールドがまだドキュメントにない場合、要素として値を持つ配列フィールドを追加します。
$push
演算子の値が配列の場合、配列全体が 1つの要素として追加されます。 さらに、各値コンポーネントを個別に追加する場合は、$each
修飾子と $push
演算子を使用できます。
前のアイデアをよりよく理解するために、次の例を検討してください。
db.employees.update(
{name: "John Doe"},
{$push: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)
上記の例では、employees
コレクション内のユーザー "John Doe"
を変更しています。 professional_skills
の配列には、テクニカル スキル、コミュニケーション スキルなどが含まれており、この場所に格納されています。
従業員の経験を物として統合することで、従業員の新しい技術的専門知識を技術スキルに押し上げています。 MongoDB と互換性のある MongoShell で上記のコード行を実行します。
出力:
{
"_id" : ObjectId("54f612b6029b47919a90cesd"),
"email" : "johndoe@exampledomain.com",
"name" : "John Doe",
"country" : "USA",
professional_skills: [
{
technical:[
{ skill:'javascript', exp: 4},
{ skill:'c', exp: 3}
]
},
]
}
$addToSet
演算子を使用して配列に値を追加する
配列に値を追加するとき、$addToSet
演算子は、値が配列に既に存在するかどうかを確認します。 それ以外の場合は何もしません。 この演算子は重複項目を配列に追加せず、既に存在する重複項目には影響しません。
この状況では、値の順序は関係ありません。
構文:
{
$addToSet: {
<field1>: <value1>,
<field2>: <value2>,
...
}
}
この場合、field
は、配列、埋め込み/ネストされたドキュメント、またはドット表記を使用して指定できます。 必要に応じて、この演算子を update()
や findAndModify()
などのメソッドと組み合わせることができます。
配列以外のフィールドは、この演算子では使用できません。 $addToSet
演算子は、要求されたフィールドが存在しない場合、値または項目を含む配列フィールドをドキュメントに生成します。
前のアイデアをよりよく理解するために、次の例を検討してください。
db.employees.update(
{name: "John Doe"},
{$addToSet: {'professional_skills.$.technical': { skill: "C++", exp: '1' }}}
)
上記の例では、employees
コレクション内のユーザー "John Doe"
を変更しています。 professional_skills
の配列には、テクニカル スキル、コミュニケーション スキルなどが含まれており、この場所に格納されています。
従業員の経験を物として統合することで、従業員の新しい技術的専門知識を技術スキルに押し上げています。 それらの主な違いは、$addToSet
は要素がまだ存在しない場合に要素を追加するのに対し、$push
は新しい要素を配列またはリストに追加することです。
MongoDB と互換性のある MongoShell で上記のコード行を実行します。
出力:
{
"_id" : ObjectId("54f612b6029b47919a90cesd"),
"email" : "johndoe@exampledomain.com",
"name" : "John Doe",
"country" : "USA",
professional_skills: [
{
technical:[
{ skill:'javascript', exp: 4},
{ skill:'c', exp: 3}
]
},
]
}
Shraddha is a JavaScript nerd that utilises it for everything from experimenting to assisting individuals and businesses with day-to-day operations and business growth. She is a writer, chef, and computer programmer. As a senior MEAN/MERN stack developer and project manager with more than 4 years of experience in this sector, she now handles multiple projects. She has been producing technical writing for at least a year and a half. She enjoys coming up with fresh, innovative ideas.
LinkedIn