Collection
Collection
is a third-level unit in Glacier
, it corresponds to Collection
in MongoDB
, and it needs to belong to a Dataset
.
To create a Collection
, you can use the createCollection
method provided by Dataset
, and you need to specify the data verification model required to create a Collection
, that is, JSON Schema
. The sample code is as follows:
async function createCollection() {
const result = await client
.namespace('myproject')
.dataset('mydataset')
.createCollection('notes', {
title: 'Notes',
type: 'object',
properties: {
title: {
type: 'string',
maxLength: 200,
},
content: {
type: 'string',
maxLength: 5000,
},
createdAt: {
type: 'number',
},
updatedAt: {
type: 'number',
},
},
required: ['title', 'content'],
});
console.log(result);
}
Output result:
{
insertedId: 'notes';
}
Collection
is used to store each specific data record. You can get the Collection
example to be operated through dataset.collection(name)
. The operations are addition, deletion, modification, and query. The sample is as follows:
Insert data
async function insertOne() {
const now = Date.now();
const notes = client
.namespace('myproject')
.dataset('mydataset')
.collection('notes');
const result = await notes.insertOne({
title: `test title`,
content: `test content`,
createdAt: now,
updatedAt: now,
});
console.log(result);
}
Query data
Collection
provides a find
method, which is analogous to MongoDB
and supports most of MongoDB
query conditions. Examples are as follows:
async function find() {
const notes = client
.namespace('myproject')
.dataset('mydataset')
.collection('notes');
const result = await notes
.find({
createdAt: {
$gt: 1668149554498,
},
})
.sort({
createdAt: -1,
})
.skip(0)
.limit(5)
.toArray();
console.log(result);
}
The advanced query syntax currently supported by Glacier SDK
is as follows:
- $eq
- $gt
- $gte
- $in
- $lt
- $lte
- $ne
- $nin
- $not
- $exists
- $regexp
- $and
- $nor
- $or
In particular, find
must call toArray()
at the end to get the final query result.
Update data
Collection
provides a updateOne
method, which is used in a similar way to a combination of find
and insertOne
. Examples are as follows:
async function updateOne() {
const now = Date.now();
const result = await myCollection.updateOne(
{
_id: '1',
},
{
updatedAt: now,
}
);
console.log(result);
}
The data update in Glacier
is different from MongoDB
. Here updateOne
is always a partial update rather than replacing the entire record when updating data, which is equivalent to using $set
in MongoDB
to update the data.
Delete data
Collection
provides a deleteOne
method, which is similar to the find
method. The example is as follows:
async function deleteOne() {
const now = Date.now();
const result = await myCollection.deleteOne({
_id: '1',
});
console.log(result);
}