Dela via


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.

Kommentar

Exempelkodfragmenten är tillgängliga på GitHub som ett JavaScript-projekt.

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 _iddokumentet 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:

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

Se även