Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A KÖVETKEZŐKRE VONATKOZIK: MongoDB
A MongoDB-dokumentumok kezelése dokumentumok beszúrásának, frissítésének és törlésének lehetőségével.
Feljegyzés
A példakódrészletek JavaScript-projektként érhetők el a GitHubon.
A MongoDB-hez készült API referenciadokumentációja | MongoDB-csomag (npm)
Dokumentum beszúrása
JSON-sémával definiált dokumentum beszúrása a gyűjteménybe.
// 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)}`);
Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:
Insert 1 - {"acknowledged":true,"insertedId":"62b2394be4042705f00fd790"}
Insert many {"acknowledged":true,"insertedCount":2,"insertedIds":{"0":"62b2394be4042705f00fd791","1":"62b2394be4042705f00fd792"}}
done
Dokumentumazonosító
Ha nem ad meg azonosítót, _ida dokumentumhoz egy BSON-objektumként jön létre. A megadott azonosító értéke az ObjectId metódussal érhető el.
Dokumentumok lekérdezése az azonosítóval:
const query = { _id: ObjectId("62b1f43a9446918500c875c5")};
Dokumentum frissítése
A dokumentum frissítéséhez adja meg a dokumentum megkereséséhez használt lekérdezést, valamint a frissíteni kívánt dokumentum tulajdonságait. Beállíthatja, hogy a dokumentumot beszúrja, ha még nem létezik.
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`)}`
);
Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg egy beszúráshoz:
Upsert result:
acknowledged: true
, modifiedCount: 0
, upsertedId: 62b1f492ff69395b30a03169
, upsertedCount: 1
, matchedCount: 0
done
Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg egy frissítéshez:
Upsert result:
acknowledged: true
, modifiedCount: 1
, upsertedId: null
, upsertedCount: 0
, matchedCount: 1
done
Gyűjtemény tömeges frissítései
A bulkWrite művelettel egyszerre több műveletet is végrehajthat. További információ a tömeges írások Azure Cosmos DB-hez való optimalizálásáról.
A következő tömeges műveletek érhetők el:
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)}`);
Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:
{
"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
Dokumentum törlése
Dokumentumok törléséhez használjon lekérdezést a dokumentumok keresésének meghatározásához.
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`)}`
);
Az előző kódrészlet a következő példakonzol kimenetét jeleníti meg:
Delete 1 result:
acknowledged: true
, deletedCount: 1
Delete all result:
acknowledged: true
, deletedCount: 27
done