Tengo algunos problemas al usar las consultas Mongoose. Solo estoy tratando de encontrar documentos en una colección usando la cláusula where .
Desafortunadamente, parece que no puede usar la cláusula where en los documentos completos .
Este es el esquema de la colección.
const schema: Schema = new Schema({ game: { type: Schema.Types.ObjectId, ref: 'Game', required: true, index: true }, players: [{ type: Schema.Types.ObjectId, ref: 'Player', required: true, index: true }], scores: [{ type: String }], resultDate: { type: Date} });Estoy tratando de encontrar todos los juegos donde type = 1v1 , así que probé esto
let query = Matchs.find() .populate('game') .populate('players') .where('game.name').equals('Trackmania') const matchs: Match[] = await query.exec();Esto devuelve una matriz vacía.
notas
Leí que la cláusula where no funcionó en documentos anidados, pero debe haber una manera de hacerlo, ¿verdad? Me estoy perdiendo de algo ?
Puede usar Buscar y hacer coincidir en lugar de Dónde.
MatchesModel.aggregate([ const GameName = req.query; {"$lookup":{ "from":"games", // name of the foreign collection "localField":"game", "foreignField":"_id", "as":"game" }}, {"$lookup":{ "from":"players", "localField":"players", "foreignField":"_id", "as":"players" }}, {"$match":{ "game.name":{ "$eq": GameName } }} ])