Compartir a través de


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:

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

Consulta también