Hantera ett dokument i Azure Cosmos DB för MongoDB med hjälp av JavaScript
GÄLLER FÖR: MongoDB
Hantera dina MongoDB-dokument med möjlighet att infoga, uppdatera och ta bort dokument.
API för MongoDB-referensdokumentation | MongoDB-paket (npm)
Infoga ett dokument
Infoga ett dokument, definierat med ett JSON-schema, i samlingen.
// 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)}`);
Föregående kodfragment visar följande exempelkonsolutdata:
Insert 1 - {"acknowledged":true,"insertedId":"62b2394be4042705f00fd790"}
Insert many {"acknowledged":true,"insertedCount":2,"insertedIds":{"0":"62b2394be4042705f00fd791","1":"62b2394be4042705f00fd792"}}
done
Dokument-ID
Om du inte anger något ID för _id
dokumentet skapas ett för dig som ett BSON-objekt. Värdet för det angivna ID:t används med metoden ObjectId.
Använd ID:t för att fråga efter dokument:
const query = { _id: ObjectId("62b1f43a9446918500c875c5")};
Uppdatera ett dokument
Om du vill uppdatera ett dokument anger du den fråga som används för att hitta dokumentet tillsammans med en uppsättning egenskaper för dokumentet som ska uppdateras. Du kan välja att upsert dokumentet, som infogar dokumentet om det inte redan finns.
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`)}`);
Föregående kodfragment visar följande exempelkonsolutdata för en infogning:
Upsert result:
acknowledged: true
, modifiedCount: 0
, upsertedId: 62b1f492ff69395b30a03169
, upsertedCount: 1
, matchedCount: 0
done
Föregående kodfragment visar följande exempelkonsolutdata för en uppdatering:
Upsert result:
acknowledged: true
, modifiedCount: 1
, upsertedId: null
, upsertedCount: 0
, matchedCount: 1
done
Massuppdateringar till en samling
Du kan utföra flera åtgärder samtidigt med bulkWrite-åtgärden . Läs mer om hur du optimerar massskrivningar för Azure Cosmos DB.
Följande massåtgärder är tillgängliga:
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)}`);
Föregående kodfragment visar följande exempelkonsolutdata:
{
"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
Ta bort ett dokument
Om du vill ta bort dokument använder du en fråga för att definiera hur dokumenten hittas.
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`)}`);
Föregående kodfragment visar följande exempelkonsolutdata:
Delete 1 result:
acknowledged: true
, deletedCount: 1
Delete all result:
acknowledged: true
, deletedCount: 27
done