Tengo una colección de documentos para que los usuarios realicen un seguimiento de las empresas que se ve así:
const mongoose = require("mongoose"); const TrackingListSchema = new mongoose.Schema({ user: { type: mongoose.Schema.Types.ObjectId, ref: "users", required: true, index: true }, email: { type: String, required: true, }, companies: [{ country: { type: String, required: true }, countryCode: { type: String, required: true }, name: { type: String, required: true } }] }); TrackingListSchema.index({"companies.name": "text"}); module.exports = mongoose.model("trackinglist", TrackingListSchema);Como puede ver, estoy creando un índice de texto en el campo "empresas.nombre".
Sin embargo, cuando ejecuto una consulta como tal:
TrackingList.aggregate([ {$match: { "companies.countryCode": "us", $text: { $search: "Some Company", $caseSensitive: false } }}, {$project: { _id: 0, email: 1, }} ])No se devuelve nada aunque estoy seguro de que al menos una lista de seguimiento tiene una empresa con ese nombre. ¿Qué estoy haciendo mal? ¿Estoy creando mal el índice de texto porque está dentro de una matriz? Pensé que tenía esto funcionando, pero ahora simplemente no puedo hacerlo funcionar.