sql >> データベース >  >> NoSQL >> MongoDB

MongoDB-ドキュメントを作成する

    MongoDBはinsert()を提供します データベースにドキュメントを追加するための方法(および他の2つ)。

    MongoDBは、データベースにドキュメントを挿入するための次の3つの方法を提供します。

    • insert()
    • insertOne()
    • insertMany()

    insert() 方法

    insert() メソッドは、1つ以上のドキュメントをコレクションに挿入します。各ドキュメントはパラメータとして提供されます。コレクション名はinsert()の前に付加されます メソッド。

    単一のドキュメントを挿入するための構文は次のとおりです。

    db.collectionName.insert({ name: "value" })

    上記の例では、ドキュメントは{ name: "value" }で構成されています 。これはJSONドキュメントです。 JSONドキュメントは、中かっこで囲まれた1つ以上の名前と値のペアで構成されます{}

    MongoDBはJSONドキュメントを使用してデータを保存するため、この形式でドキュメントを挿入します。

    以前、データベースを作成したときにこの方法を使用しました。

    データベースに別のドキュメントを追加しましょう:

    db.artists.insert({ artistname: "Jorn Lande" })

    これにより、{ artistname: "Jorn Lande" }のドキュメントが挿入されます その内容として。

    ここで、 Artists を検索すると コレクションには、2つのドキュメント(以前に作成したドキュメントを含む)が表示されます:

    > db.artists.find()
    { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
    { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
    

    MongoDBが_idを作成したことに注意してください ドキュメントのフィールド。指定しない場合は、MongoDBが作成します。ただし、_idの値を制御したい場合は、挿入を行うときにこのフィールドを指定できます。 フィールド。

    db.artists.insert({ _id: 1, artistname: "AC/DC" })

    結果:

    > db.artists.find()
    { "_id" : ObjectId("5780fbf948ef8c6b3ffb0149"), "artistname" : "The Tea Party" }
    { "_id" : ObjectId("5781c9ac48ef8c6b3ffb014a"), "artistname" : "Jorn Lande" }
    { "_id" : 1, "artistname" : "AC/DC" }
    

    _id MongoDBが提供するのは12バイトのObjectId値です。次の値で構成されています;

    • Unixエポックからの秒数を表す4バイトの値
    • 3バイトのマシン識別子
    • 2バイトのプロセスID、および
    • ランダムな値で始まる3バイトのカウンター。

    複数のドキュメントを作成する

    1つのinsert()内に複数のドキュメントを挿入できます メソッド。

    この例では、次の3つのドキュメントを挿入します。

    db.artists.insert(
       [
         { artistname: "The Kooks" },
         { artistname: "Bastille" },
         { artistname: "Gang of Four" }
       ]
    )

    ドキュメントは配列として提供されていることに注意してください。ドキュメントは角かっこで囲まれています[] 、およびそれらはコンマで区切られます。

    上記のコードを実行すると、次のメッセージが表示されます。

    BulkWriteResult({
    	"writeErrors" : [ ],
    	"writeConcernErrors" : [ ],
    	"nInserted" : 3,
    	"nUpserted" : 0,
    	"nMatched" : 0,
    	"nModified" : 0,
    	"nRemoved" : 0,
    	"upserted" : [ ]
    })
    

    埋め込みドキュメント

    ドキュメントには、他のドキュメント、配列、およびドキュメントの配列を含めることができます。

    カンマで区切ることにより、ドキュメント内に複数の名前と値のペアを指定することもできます。

    db.artists.insert({
        artistname : "Deep Purple",
        albums : [
                    {
                        album : "Machine Head",
                        year : 1972,
                        genre : "Rock"
                    }, 
                    {
                        album : "Stormbringer",
                        year : 1974,
                        genre : "Rock"
                    }
                ]
    })

    結果:

    WriteResult({ "nInserted" : 1 })
    

    パラメータ

    insert() メソッドは次のパラメータを受け入れます。

    パラメータ タイプ 説明
    document ドキュメントまたはアレイ コレクションに挿入するドキュメントまたはドキュメントの配列(上記の例のように)。
    writeConcern ドキュメント オプションのパラメーター。これは、書き込みの懸念を表すドキュメントです。書き込みの懸念事項は、スタンドアロンのmongod、レプリカセット、またはシャーディングされたクラスターへの書き込み操作に対してMongoDBから要求される確認応答のレベルを表します。
    ordered ブール値 オプションのパラメーター。値がtrueに設定されている場合 、MongoDBは配列内のドキュメントの順序付けられた挿入を実行し、ドキュメントの1つでエラーが発生した場合、MongoDBは配列内の残りのドキュメントを処理せずに戻ります。

    値がfalseに設定されている場合 、MongoDBは順序付けられていない挿入を実行し、ドキュメントの1つでエラーが発生した場合、配列内の残りのドキュメントは引き続き処理されます。

    insertOne() 方法

    insertOne()を使用することもできます 単一のドキュメントをコレクションに挿入する方法:

    db.musicians.insertOne({ _id: 1, name: "Ian Gillan", instrument: "Vocals" })

    ここでは、存在しないコレクションを指定しました。 insert()と同様 メソッドの場合、指定されたコレクションがまだ存在しない場合は作成されます。

    insert()を使用した場合とは出力が異なることに気付くでしょう。 方法:

    { "acknowledged" : true, "insertedId" : 1 }
    

    埋め込みドキュメント

    insert()と同様 、埋め込みドキュメントとドキュメントの配列を挿入できます:

    db.artists.insertOne({
        artistname : "Miles Davis",
        albums : [
                    {
                        album : "Kind of Blue",
                        year : 1959,
                        genre : "Jazz"
                    }, 
                    {
                        album : "Bitches Brew",
                        year : 1970,
                        genre : "Jazz"
                    }
                ]
    })

    結果:

    {
    	"acknowledged" : true,
    	"insertedId" : ObjectId("578214f048ef8c6b3ffb0159")
    }
    

    insertMany() 方法

    名前が示すように、insertMany()を使用できます 複数のドキュメントを挿入するには:

    db.musicians.insertMany(
       [
         { _id: 2, name: "Ian Paice", instrument: "Drums", born: 1948 },
         { _id: 3, name: "Roger Glover", instrument: "Bass", born: 1945 },
         { _id: 4, name: "Steve Morse", instrument: "Guitar", born: 1954 },
         { _id: 5, name: "Don Airey", instrument: "Keyboards", born: 1948 },
         { _id: 6, name: "Jeff Martin", instrument: "Vocals", born: 1969 },
         { _id: 7, name: "Jeff Burrows", instrument: "Drums", born: 1968 },
         { _id: 8, name: "Stuart Chatwood", instrument: "Bass", born: 1969 },
       ]
    )

    繰り返しますが、insertMany()を使用した場合の出力 insert()を使用して複数のドキュメントを挿入した場合とは異なります 方法:

    {
    	"acknowledged" : true,
    	"insertedIds" : [
    		2,
    		3,
    		4,
    		5,
    		6,
    		7,
    		8
    	]
    }
    

    埋め込みドキュメント

    db.artists.insertMany(
    [
    {
        artistname : "Robben Ford",
        albums : [
                    {
                        album : "Bringing it Back Home",
                        year : 2013,
                        genre : "Blues"
                    }, 
                    {
                        album : "Talk to Your Daughter",
                        year : 1988,
                        genre : "Blues"
                    }
                ]
    }, {
        artistname : "Snoop Dogg",
        albums : [
                    {
                        album : "Tha Doggfather",
                        year : 1996,
                        genre : "Rap"
                    }, 
                    {
                        album : "Reincarnated",
                        year : 2013,
                        genre : "Reggae"
                    }
                ]
    }
    ])

    結果:

    {
    	"acknowledged" : true,
    	"insertedIds" : [
    		ObjectId("578217c248ef8c6b3ffb015a"),
    		ObjectId("578217c248ef8c6b3ffb015b")
    	]
    }
    

    1. Microsoft Azureのdjangoプロジェクトでcelery-redisを構成するにはどうすればよいですか?

    2. MongoDBのフィールドの実際のタイプを返します

    3. spring-data-redis1.7.0.M1を使用するときにredis-clusterを設定する方法

    4. 大規模なコレクションのMongoDBでの一括挿入パフォーマンス