Node.js 기본 사항 — MongoDB 텍스트 및 고유 인덱스

https://www.amazon.com/John-Au-Yeung/e/B08FT5NT62에서 Amazon에서 내 책을 확인하십시오.

지금 http://jauyeung.net/subscribe/에서 내 이메일 목록을 구독하십시오.

Node.js는 실행되는 프로그램을 만드는 인기 있는 런타임 플랫폼입니다.

브라우저 외부에서 JavaScript를 실행할 수 있습니다.

이 기사에서는 Node.js를 사용하여 프로그램을 만드는 방법을 살펴보겠습니다.

텍스트 인덱스



텍스트 인덱스를 사용하면 문자열 내용이 포함된 쿼리에서 텍스트 검색을 수행할 수 있습니다.

값이 문자열 또는 문자열 배열인 모든 필드를 포함할 수 있습니다.

예를 들어, 인덱스를 생성하고 작성하여 사용할 수 있습니다."

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);


다음과 같이 작성하여 인덱스를 생성합니다.

const indexResult = await testCollection.createIndex({ name: "text" }, { default_language: "english" });

createIndex 메서드는 name 필드에 인덱스를 추가합니다.

두 번째 인수에는 인덱스 생성 옵션이 있습니다.
default_language은 색인 언어를 설정합니다.

고유 인덱스



중복 값을 저장하지 않는 필드를 인덱싱하는 고유 인덱스를 추가할 수 있습니다.
_id 필드에는 컬렉션이 생성될 때 추가된 고유 인덱스가 있습니다.

예를 들어 다음과 같이 작성할 수 있습니다.

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);


두 번째 인수는 createIndex 속성이 unique으로 설정된 객체인 true을 호출합니다.

컬렉션의 필드에 중복 값이 ​​있는 경우 인덱스를 만들려고 할 때 '중복 키 오류 인덱스' 오류가 발생합니다.

결론



텍스트 검색을 위한 인덱스를 추가하고 MongoDB 필드의 고유 값을 인덱싱할 수 있습니다.

좋은 웹페이지 즐겨찾기