Bagikan melalui


Mengelola dokumen di Azure Cosmos DB untuk MongoDB menggunakan JavaScript

BERLAKU UNTUK: MongoDB

Kelola dokumen MongoDB Anda dengan kemampuan untuk menyisipkan, memperbarui, dan menghapus dokumen.

Catatan

Contoh cuplikan kode tersedia di GitHub sebagai proyek JavaScript.

API untuk dokumentasi | referensi MongoDB Paket MongoDB (npm)

Menyisipkan dokumen

Menyisipkan dokumen, yang ditentukan dengan skema JSON, ke dalam koleksi Anda.

// 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)}`);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Insert 1 - {"acknowledged":true,"insertedId":"62b2394be4042705f00fd790"}
Insert many {"acknowledged":true,"insertedCount":2,"insertedIds":{"0":"62b2394be4042705f00fd791","1":"62b2394be4042705f00fd792"}}
done

ID Dokumen

Jika Anda tidak memberikan ID, _id, untuk dokumen Anda, ID dibuat untuk Anda sebagai objek BSON. Nilai ID yang disediakan diakses dengan metode ObjectId.

Gunakan ID untuk mengkueri dokumen:

const query = { _id: ObjectId("62b1f43a9446918500c875c5")};

Memperbarui dokumen

Untuk memperbarui dokumen, tentukan kueri yang digunakan untuk menemukan dokumen bersama dengan set properti dokumen yang harus diperbarui. Anda dapat memilih untuk menerapkan upsert pada dokumen, yang menyisipkan dokumen jika dokumen tersebut belum ada.

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`)}`
);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut untuk penyisipan:

Upsert result:
        acknowledged: true
,       modifiedCount: 0
,       upsertedId: 62b1f492ff69395b30a03169
,       upsertedCount: 1
,       matchedCount: 0

done

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut untuk pembaruan:

Upsert result:
        acknowledged: true
,       modifiedCount: 1
,       upsertedId: null
,       upsertedCount: 0
,       matchedCount: 1

done

Pembaruan massal untuk koleksi

Anda dapat melakukan beberapa operasi sekaligus dengan operasi bulkWrite. Pelajari selengkapnya tentang cara mengoptimalkan penulisan massal untuk Azure Cosmos DB.

Operasi massal berikut tersedia:

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)}`);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

{
  "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

Hapus dokumen

Untuk menghapus dokumen, gunakan kueri untuk menentukan bagaimana dokumen ditemukan.

const product = {
  _id: new 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`)}`
);

Cuplikan kode sebelumnya menampilkan contoh output konsol berikut:

Delete 1 result:
        acknowledged: true
,       deletedCount: 1

Delete all result:
        acknowledged: true
,       deletedCount: 27

done

Lihat juga