MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

MongoDB - Créer un document

MongoDB fournit le insert() méthode (et deux autres) pour ajouter des documents à une base de données.

MongoDB fournit les trois méthodes suivantes pour insérer des documents dans une base de données :

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

Le insert() Méthode

Le insert() La méthode insère un ou plusieurs documents dans une collection. Chaque document est fourni en paramètre. Le nom de la collection est ajouté au début du insert() méthode.

Voici la syntaxe pour insérer un seul document :

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

Dans l'exemple ci-dessus, le document se compose de { name: "value" } . Il s'agit d'un document JSON. Les documents JSON consistent en une ou plusieurs paires nom/valeur, entre accolades {} .

MongoDB utilise des documents JSON pour stocker des données, c'est pourquoi nous insérons des documents dans ce format.

Nous avons déjà utilisé cette méthode lors de la création d'une base de données.

Ajoutons un autre document à notre base de données :

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

Cela insère un document avec { artistname: "Jorn Lande" } que son contenu.

Maintenant, si nous recherchons les artistes collection, nous verrons deux documents (dont celui que nous avons créé précédemment) :

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

Notez que MongoDB a créé un _id champ pour les documents. Si vous n'en spécifiez pas, MongoDB en créera un pour vous. Cependant, vous pouvez fournir ce champ lors de l'insertion si vous préférez avoir le contrôle sur la valeur du _id champ.

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

Résultat :

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

Le _id que MongoDB fournit est une valeur ObjectId de 12 octets. Il est composé des valeurs suivantes :

  • une valeur de 4 octets représentant les secondes depuis l'époque Unix,
  • un identifiant de machine de 3 octets,
  • un identifiant de processus de 2 octets, et
  • un compteur de 3 octets, commençant par une valeur aléatoire.

Créer plusieurs documents

Vous pouvez insérer plusieurs documents dans un seul insert() méthode.

Dans cet exemple, nous insérons trois documents :

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

Notez que les documents sont fournis sous forme de tableau. Les documents sont entre crochets [] , et ils sont séparés par des virgules.

L'exécution du code ci-dessus entraîne le message suivant :

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

Documents intégrés

Un document peut contenir d'autres documents, tableaux et tableaux de documents.

Vous pouvez également fournir plusieurs paires nom/valeur dans un document en les séparant par une virgule.

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

Résultat :

WriteResult({ "nInserted" : 1 })

Paramètres

Le insert() La méthode accepte les paramètres suivants.

Paramètre Tapez Description
document document ou tableau Un document ou un tableau de documents à insérer dans la collection (comme dans les exemples ci-dessus).
writeConcern document Paramètre facultatif. Il s'agit d'un document exprimant le souci d'écriture. Un problème d'écriture décrit le niveau d'accusé de réception demandé à MongoDB pour les opérations d'écriture sur un mongod autonome ou sur des ensembles de réplicas ou sur des clusters fragmentés.
ordered booléen Paramètre facultatif. Si la valeur est définie sur true , MongoDB effectuera une insertion ordonnée des documents dans le tableau, et si une erreur se produit avec l'un des documents, MongoDB reviendra sans traiter les documents restants dans le tableau.

Si la valeur est définie sur false , MongoDB effectuera une insertion non ordonnée, et si une erreur se produit avec l'un des documents, les documents restants dans le tableau continueront à être traités.

Le insertOne() Méthode

Vous pouvez également utiliser le insertOne() méthode pour insérer un seul document dans une collection :

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

Ici, nous avons spécifié une collection inexistante. Comme avec le insert() , la collection spécifiée sera créée si elle n'existe pas déjà.

Vous remarquerez que la sortie est différente lorsque vous utilisez le insert() méthode :

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

Documents intégrés

Comme avec insert() , vous pouvez insérer des documents intégrés et des tableaux de documents :

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

Résultat :

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

Le insertMany() Méthode

Comme son nom l'indique, vous pouvez utiliser insertMany() pour insérer plusieurs documents :

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 },
   ]
)

Encore une fois, la sortie lors de l'utilisation de insertMany() est différent que si vous insériez plusieurs documents à l'aide de insert() méthode :

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

Documents intégrés

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"
                }
            ]
}
])

Résultat :

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