Check out my books on Amazon at https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62
Subscribe to my email list now at http://jauyeung.net/subscribe/
Node.js is a popular runtime platform to create programs that run on it.
It lets us run JavaScript outside the browser.
In this article, we’ll look at how to start using Node.js to create programs.
Text Indexes
Text indexes let us do text searches on queries that have string content.
It can include any field whose value is a string or an array of strings.
For example, we can create the index and use it by wriing”
const { MongoClient } = require('mongodb');
const connection = "mongodb://localhost:27017";
const client = new MongoClient(connection);
async function run() {
try {
await client.connect();
const db = client.db("test");
const testCollection = await db.collection('test');
await testCollection.dropIndexes();
const indexResult = await testCollection.createIndex({ name: "text" }, { default_language: "english" });
console.log(indexResult)
await testCollection.deleteMany({})
const result = await testCollection.insertMany([
{ "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
{ "_id": 2, "name": "bananas", "qty": 7, "rating": 1 },
{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
{ "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
]);
console.log(result)
const query = { $text: { $search: "apple" } };
const projection = { name: 1 };
const cursor = testCollection
.find(query)
.project(projection);
cursor.forEach(console.dir);
} finally {
await client.close();
}
}
run().catch(console.dir);
We create the index by writing:
const indexResult = await testCollection.createIndex({ name: "text" }, { default_language: "english" });
The createIndex
method adds the index to the name
field.
The 2nd argument has the options for creating the index.
The default_language
sets the index language.
Unique Indexes
We can add a unique index that index fields that don’t store duplicate values.
The _id
field has a unique index added to it when the collection is created.
For example, we can write:
const { MongoClient } = require('mongodb');
const connection = "mongodb://localhost:27017";
const client = new MongoClient(connection);
async function run() {
try {
await client.connect();
const db = client.db("test");
const testCollection = await db.collection('test');
await testCollection.dropIndexes();
const indexResult = await testCollection.createIndex({ name: "text" }, { unique: true });
console.log(indexResult)
await testCollection.deleteMany({})
const result = await testCollection.insertMany([
{ "_id": 1, "name": "apples", "qty": 5, "rating": 3 },
{ "_id": 2, "name": "bananas", "qty": 7, "rating": 1 },
{ "_id": 3, "name": "oranges", "qty": 6, "rating": 2 },
{ "_id": 4, "name": "avocados", "qty": 3, "rating": 5 },
]);
console.log(result)
const query = {};
const projection { name: 1 };
const cursor = testCollection
.find(query)
.project(projection);
cursor.forEach(console.dir);
} finally {
await client.close();
}
}
run().catch(console.dir);
to call createIndex
with the 2nd argument being an object with the unique
property set to true
.
If there’re any duplicate values in the field in the collection, then we get the ‘duplicate key error index’ error when we try to create the index.
Conclusion
We can add indexes for text searches and indexing unique values for MongoDB fields.