Administración de un documento en Azure Cosmos DB for MongoDB mediante JavaScript
SE APLICA A: MongoDB
Administre los documentos de MongoDB con la capacidad de insertar, actualizar y eliminar documentos.
Nota:
Los fragmentos de código de ejemplo están disponibles en GitHub como un proyecto de JavaScript.
Documentación de referencia de API para MongoDB | paquete de MongoDB (npm)
Inserción de un documento
Inserte un documento, definido con un esquema JSON, en la colección.
// get database client for database
// if database or collection doesn't exist, it is created
// when the doc is inserted
// insert doc
const doc = { name: `product-${random}` };
const insertOneResult = await client.db("adventureworks").collection("products").insertOne(doc);
console.log(`Insert 1 - ${JSON.stringify(insertOneResult)}`);
// insert docs
const docs = [
{ name: `product-${random}` },
{ name: `product-${random}` }
];
const insertManyResult = await client.db("adventureworks").collection("products").insertMany(docs);
console.log(`Insert many ${JSON.stringify(insertManyResult)}`);
El fragmento de código anterior muestra la salida de la consola de ejemplo siguiente:
Insert 1 - {"acknowledged":true,"insertedId":"62b2394be4042705f00fd790"}
Insert many {"acknowledged":true,"insertedCount":2,"insertedIds":{"0":"62b2394be4042705f00fd791","1":"62b2394be4042705f00fd792"}}
done
Id. de documento
Si no proporciona un identificador, _id
, para el documento, se crea uno automáticamente como objeto BSON. Se tiene acceso al valor del identificador proporcionado con el método ObjectId.
Use el identificador para consultar documentos:
const query = { _id: ObjectId("62b1f43a9446918500c875c5")};
Actualización de un documento
Para actualizar un documento, especifique la consulta utilizada para buscar el documento junto con un conjunto de propiedades del documento que se deben actualizar. Puede optar por actualizar/insertar (upsert) el documento, que inserta el documento si aún no existe.
const product = {
category: "gear-surf-surfboards",
name: "Yamba Surfboard 3",
quantity: 15,
sale: true
};
const query = { name: product.name};
const update = { $set: product };
const options = {upsert: true, new: true};
const upsertResult = await client.db("adventureworks").collection('products').updateOne(query, update, options);
console.log(`Upsert result:\t\n${Object.keys(upsertResult).map(key => `\t${key}: ${upsertResult[key]}\n`)}`);
El fragmento de código anterior muestra la salida de la consola de ejemplo siguiente para una inserción:
Upsert result:
acknowledged: true
, modifiedCount: 0
, upsertedId: 62b1f492ff69395b30a03169
, upsertedCount: 1
, matchedCount: 0
done
El fragmento de código anterior muestra la salida de la consola de ejemplo siguiente para una actualización:
Upsert result:
acknowledged: true
, modifiedCount: 1
, upsertedId: null
, upsertedCount: 0
, matchedCount: 1
done
Actualizaciones masivas de una colección
Puede realizar varias operaciones a la vez con la operación bulkWrite. Obtenga más información sobre cómo optimizar operaciones de escritura masivas para Azure Cosmos DB.
Se encuentran disponibles las siguientes operaciones masivas:
MongoClient.Db.Collection.bulkWrite
insertOne
updateOne
updateMany
deleteOne
deleteMany
const doc1 = {
category: "gear-surf-surfboards",
name: "Yamba Surfboard 3",
quantity: 15,
sale: true
};
const doc2={
category: "gear-surf-surfboards",
name: "Yamba Surfboard 7",
quantity: 5,
sale: true
};
// update docs with new property/value
const addNewProperty = {
filter: { "category": "gear-surf-surfboards" },
update: { $set: { discontinued: true } },
upsert: true,
};
// bulkWrite only supports insertOne, updateOne, updateMany, deleteOne, deleteMany
const upsertResult = await client.db("adventureworks").collection('products').bulkWrite([
{ insertOne: {document: doc1}},
{ insertOne: {document: doc2}},
{ updateMany: addNewProperty},
]);
console.log(`${JSON.stringify(upsertResult)}`);
El fragmento de código anterior muestra la salida de la consola de ejemplo siguiente:
{
"ok":1,
"writeErrors":[],
"writeConcernErrors":[],
"insertedIds":[
{"index":0,"_id":"62b23a371a09ed6441e5ee30"},
{"index":1,"_id":"62b23a371a09ed6441e5ee31"}],
"nInserted":2,
"nUpserted":0,
"nMatched":10,
"nModified":10,
"nRemoved":0,
"upserted":[]
}
done
Eliminar un documento
Para eliminar documentos, use una consulta para definir cómo se encuentran los documentos.
const product = {
_id: ObjectId("62b1f43a9446918500c875c5"),
category: "gear-surf-surfboards",
name: "Yamba Surfboard 3",
quantity: 15,
sale: true
};
const query = { name: product.name};
// delete 1 with query for unique document
const delete1Result = await client.db("adventureworks").collection('products').deleteOne(query);
console.log(`Delete 1 result:\t\n${Object.keys(delete1Result).map(key => `\t${key}: ${delete1Result[key]}\n`)}`);
// delete all with empty query {}
const deleteAllResult = await client.db("adventureworks").collection('products').deleteMany({});
console.log(`Delete all result:\t\n${Object.keys(deleteAllResult).map(key => `\t${key}: ${deleteAllResult[key]}\n`)}`);
El fragmento de código anterior muestra la salida de la consola de ejemplo siguiente:
Delete 1 result:
acknowledged: true
, deletedCount: 1
Delete all result:
acknowledged: true
, deletedCount: 27
done