Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MongoDB

Tìm kiếm nhiều trường với nhiều giá trị trong MongoDB

Để tìm kiếm văn bản trên nhiều trường cùng lúc, sử dụng Text Index kết hợp toán tử $text và $search.

Ví dụ: Collection searchMultipleFieldsDemo:

> db.searchMultipleFieldsDemo.insertOne({"_id":100,"FirstSubject":"Java","SecondSubject":"MongoDB"});
>> db.searchMultipleFieldsDemo.insertOne({"_id":101,"FirstSubject":"MongoDB","SecondSubject":"MySQL"});
> db.searchMultipleFieldsDemo.insertOne({"_id":102,"FirstSubject":"MySQL","SecondSubject":"Java"});

Tạo text index trên các trường cần tìm kiếm:

> db.searchMultipleFieldsDemo.createIndex({ "FirstSubject": "text", "SecondSubject": "text" });

Tìm kiếm từ khóa "Java MongoDB":

> db.searchMultipleFieldsDemo.find({ $text: { $search: "Java MongoDB" } });

Kết quả trả về 3 tài liệu (được sắp xếp theo điểm text score):

{ "_id" : 102, "FirstSubject" : "MySQL", "SecondSubject" : "Java" }
{ "_id" : 100, "FirstSubject" : "Java", "SecondSubject" : "MongoDB" }
{ "_id" : 101, "FirstSubject" : "MongoDB", "SecondSubject" : "MySQL" }

Lưu ý:

  • Cần tạo text index trước khi dùng $text.
  • Mỗi collection chỉ được có một text index (có thể bao gồm nhiều trường).
  • Kết quả mặc định sắp xếp theo textScore giảm dần.