Aracılığıyla paylaş


JavaScript kullanarak MongoDB için Azure Cosmos DB'de belge yönetme

ŞUNLAR IÇIN GEÇERLIDIR: MongoDB

Belgeleri ekleme, güncelleştirme ve silme özelliğiyle MongoDB belgelerinizi yönetin.

Not

Örnek kod parçacıkları GitHub'da JavaScript projesi olarak kullanılabilir.

MongoDB için API başvuru belgeleri | MongoDB Paketi (npm)

Belge ekleme

JSON şemasıyla tanımlanan bir belgeyi koleksiyonunuz içine ekleyin.

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

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

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

Belge Kimliği

Belgeniz için bir kimlik sağlamazsanız, BSON nesnesi olarak sizin için bir kimlik _idoluşturulur. Sağlanan kimliğin değerine ObjectId yöntemiyle erişilir.

Belgeleri sorgulamak için kimliği kullanın:

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

Bir belgeyi güncelleştirme

Belgeyi güncelleştirmek için, belgeyi bulmak için kullanılan sorguyu ve güncelleştirilmesi gereken belgenin bir dizi özelliğini belirtin. Belge henüz yoksa belgeyi ekleyen yukarı eklemeyi seçebilirsiniz.

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

Yukarıdaki kod parçacığı, ekleme için aşağıdaki örnek konsol çıkışını görüntüler:

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

done

Yukarıdaki kod parçacığı bir güncelleştirme için aşağıdaki örnek konsol çıkışını görüntüler:

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

done

Koleksiyona toplu güncelleştirmeler

BulkWrite işlemiyle aynı anda birkaç işlem gerçekleştirebilirsiniz. Azure Cosmos DB için toplu yazmaları iyileştirme hakkında daha fazla bilgi edinin.

Aşağıdaki toplu işlemler kullanılabilir:

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

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

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

Belgeyi silme

Belgeleri silmek için, belgelerin nasıl bulunduğunu tanımlamak için bir sorgu kullanın.

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

Yukarıdaki kod parçacığı aşağıdaki örnek konsol çıkışını görüntüler:

Delete 1 result:
        acknowledged: true
,       deletedCount: 1

Delete all result:
        acknowledged: true
,       deletedCount: 27

done

Ayrıca bkz.