Verwalten eines Dokuments in der Azure Cosmos DB for MongoDB mithilfe von JavaScript
GILT FÜR: MongoDB
Verwalten Sie Ihre MongoDB-Dokumente mit der Möglichkeit, Dokumente einzufügen, zu aktualisieren und zu löschen.
Hinweis
Die Beispielcodeausschnitte sind auf GitHub als JavaScript-Projekt verfügbar.
„API für MongoDB“-Referenzdokumentation | MongoDB-Paket (npm)
Einfügen eines Dokuments
Fügen Sie ein Dokument, das mit einem JSON-Schema definiert ist, in Ihre Sammlung ein.
// 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)}`);
Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:
Insert 1 - {"acknowledged":true,"insertedId":"62b2394be4042705f00fd790"}
Insert many {"acknowledged":true,"insertedCount":2,"insertedIds":{"0":"62b2394be4042705f00fd791","1":"62b2394be4042705f00fd792"}}
done
Dokument-ID
Wenn Sie für Ihr Dokument keine ID, _id
, angeben, wird automatisch eine als BSON-Objekt erstellt. Der Zugriff auf den Wert der angegebenen ID erfolgt mit der ObjectId-Methode.
Verwenden Sie die ID, um Dokumente abzufragen:
const query = { _id: ObjectId("62b1f43a9446918500c875c5")};
Aktualisieren eines Dokuments
Um ein Dokument zu aktualisieren, geben Sie die verwendete Abfrage zum Suchen des Dokuments zusammen den Eigenschaften des Dokuments an, die aktualisiert werden sollen. Sie können ein Upsert für das Dokument ausführen, d. h. das Dokument wird eingefügt, wenn es noch nicht vorhanden ist.
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`)}`);
Der obige Codeschnipsel zeigt für einen Einfügevorgang die folgende Beispielausgabe in der Konsole an:
Upsert result:
acknowledged: true
, modifiedCount: 0
, upsertedId: 62b1f492ff69395b30a03169
, upsertedCount: 1
, matchedCount: 0
done
Der obige Codeschnipsel zeigt für einen Aktualisierungsvorgang die folgende Beispielausgabe in der Konsole an:
Upsert result:
acknowledged: true
, modifiedCount: 1
, upsertedId: null
, upsertedCount: 0
, matchedCount: 1
done
Massenaktualisierungen für eine Sammlung
Mit dem bulkWrite-Vorgang können Sie mehrere Vorgänge gleichzeitig ausführen. Erfahren Sie mehr über das Optimieren von Massenschreibvorgängen für Azure Cosmos DB.
Die folgenden Massenvorgänge sind verfügbar:
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)}`);
Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:
{
"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
Löschen eines Dokuments
Verwenden Sie zum Löschen von Dokumenten eine Abfrage, um die betreffenden Dokumente zu finden.
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`)}`);
Der obige Codeschnipsel zeigt die folgende Beispielausgabe in der Konsole an:
Delete 1 result:
acknowledged: true
, deletedCount: 1
Delete all result:
acknowledged: true
, deletedCount: 27
done