este es mi esquema
const ElectionScheme= new mongoose.Schema({ id:{ type:Number }, description:{ type:String }, startDate:{ type:Date }, closeDate:{ type:Date }, certificatesMaxAmount:{ type:Number }, voters:[{ idCard:Number, credential:String, names: String, surnames:String, gender:String, birthDate:Date, department:String, idCircuit:Number, phone:Number, mail:String, votesCount:Number, certificatesCount:Number }]})
Hola, estoy tratando de extraer un solo votante filtrando por su tarjeta de identificación de una matriz en un modelo, pero siempre obtengo la lista completa de votantes. intento esto
const Elections = require("../models/Elections"); Elections.findOne({ id: voteData.idElection,"voters.idCard":voteData.idCard, "candidates.idCard": voteData.idCandidate}) .select(["candidates", "voters", "electionMode"]) .lean().then(election => {... }Ingresa el código aquí
No puedo decir qué está pasando con los "candidates" , pero aquí hay una forma de filtrar/proyectar lo que devuelve la matriz de "voters" .
db.collection.find({ "id": 3423423, // <-- voteData.idElection "voters.idCard": 345 // <-- voteData.idCard }, { "voters.$": 1 })Pruébelo con datos inventados en mongoplayground.net .