sql >> Base de Datos >  >> NoSQL >> MongoDB

MongoDB - Crear un documento

MongoDB proporciona el insert() (y otros dos) para agregar documentos a una base de datos.

MongoDB proporciona los siguientes tres métodos para insertar documentos en una base de datos:

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

El insert() Método

El insert() El método inserta uno o más documentos en una colección. Cada documento se proporciona como un parámetro. El nombre de la colección se antepone a insert() método.

Esta es la sintaxis para insertar un solo documento:

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

En el ejemplo anterior, el documento consta de { name: "value" } . Este es un documento JSON. Los documentos JSON constan de uno o más pares de nombre/valor, encerrados entre llaves {} .

MongoDB usa documentos JSON para almacenar datos, por eso insertamos documentos en este formato.

Ya usamos este método anteriormente cuando creamos una base de datos.

Agreguemos otro documento a nuestra base de datos:

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

Esto inserta un documento con { artistname: "Jorn Lande" } como su contenido.

Ahora, si buscamos los artistas colección, veremos dos documentos (incluido el que creamos anteriormente):

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

Tenga en cuenta que MongoDB ha creado un _id campo para los documentos. Si no especifica uno, MongoDB creará uno para usted. Sin embargo, puede proporcionar este campo al realizar la inserción si prefiere tener control sobre el valor de _id campo.

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

Resultado:

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

El _id que proporciona MongoDB es un valor ObjectId de 12 bytes. Se compone de los siguientes valores;

  • un valor de 4 bytes que representa los segundos desde la época de Unix,
  • un identificador de máquina de 3 bytes,
  • una identificación de proceso de 2 bytes, y
  • un contador de 3 bytes, que comienza con un valor aleatorio.

Crear varios documentos

Puede insertar varios documentos dentro de un único insert() método.

En este ejemplo, insertamos tres documentos:

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

Tenga en cuenta que los documentos se proporcionan como una matriz. Los documentos están entre corchetes [] , y están separados por comas.

Ejecutar el código anterior da como resultado el siguiente mensaje:

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

Documentos incrustados

Un documento puede contener otros documentos, matrices y matrices de documentos.

También puede proporcionar múltiples pares de nombre/valor dentro de un documento separándolos con una coma.

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

Resultado:

WriteResult({ "nInserted" : 1 })

Parámetros

El insert() método acepta los siguientes parámetros.

Parámetro Tipo Descripción
document documento o matriz Un documento o conjunto de documentos para insertar en la colección (como en los ejemplos anteriores).
writeConcern documento Parámetro opcional. Este es un documento que expresa la preocupación por escribir. Un problema de escritura describe el nivel de reconocimiento solicitado de MongoDB para las operaciones de escritura en un mongod independiente o en conjuntos de réplicas o en clústeres fragmentados.
ordered booleano Parámetro opcional. Si el valor se establece en true , MongoDB realizará una inserción ordenada de los documentos en la matriz, y si ocurre un error con uno de los documentos, MongoDB regresará sin procesar los documentos restantes en la matriz.

Si el valor se establece en false , MongoDB realizará una inserción desordenada y, si se produce un error con uno de los documentos, los documentos restantes de la matriz seguirán procesándose.

El insertOne() Método

También puede usar insertOne() método para insertar un solo documento en una colección:

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

Aquí, hemos especificado una colección inexistente. Al igual que con insert() método, la colección especificada se creará si aún no existe.

Notarás que la salida es diferente a cuando usas insert() método:

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

Documentos incrustados

Al igual que con insert() , puede insertar documentos incrustados y conjuntos de documentos:

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

Resultado:

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

El insertMany() Método

Como sugiere el nombre, puede usar insertMany() para insertar varios documentos:

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

Nuevamente, la salida cuando se usa insertMany() es diferente que si hubiera insertado varios documentos usando insert() método:

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

Documentos incrustados

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

Resultado:

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