MongoDB 要素を配列に追加

Shraddha Paghdar 2023年6月20日
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 Paghdar avatar Shraddha Paghdar avatar

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

関連記事 - MongoDB Array