Tôi có thể sử dụng một lược đồ như thế này, lược đồ này lưu trữ các thẻ trong một trường mảng chuỗi:
db.movies.insert({
name: "The Godfather",
director: "Francis Ford Coppola",
tags: [ "mafia", "wedding", "violence" ]
})
db.movies.insert({
name: "Pulp Fiction",
director: "Quentin Tarantino",
tags: [ "briefcase", "violence", "gangster" ]
})
db.movies.insert({
name: "Inception",
director: "Christopher Nolan",
tags: [ "dream", "thief", "subconscious" ]
})
Bạn sẽ không cần giảm bản đồ cho loại truy vấn này. Bằng cách nhúng các thẻ bên trong tài liệu phim, bạn có thể tận dụng nhiều khóa của MongoDB và tìm phim với một thẻ nhất định bằng cách sử dụng find () duy nhất truy vấn như thế này:
db.movies.find( { tags: "dream" } )
Và như bạn đã nói, bạn cũng nên thêm một chỉ mục vào mảng multikey để cải thiện hiệu suất truy vấn:
db.movies.ensureIndex( { tags: 1 } )