Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

332
Vistas
Mongodb La búsqueda en una matriz de ID usando include no funciona

tengo este modelo:

 const NeighborSchema = new Schema({ friends: [ { type: Schema.Types.ObjectId, ref: "users", }, ], date: { type: Date, default: Date.now, }, }); module.exports = Neighbor = mongoose.model("neighbor", NeighborSchema);

Estoy tratando de ver si existe un amigo en amigos de todos los vecinos:

 const mongoose = require("mongoose"); const ObjectId = mongoose.Types.ObjectId; const testIncludes = async () => { let neighbors = await Neighbor.find(); let friends_ids = []; neighbors.map((neighbor) => { const { friends } = neighbor; friends_ids = [...friends_ids, ...friends]; }); // Returns false for this const element_to_search = ObjectId("60dcbb29118ea36a4f3ce229"); // Returns false for this // const element_to_search = "60dcbb29118ea36a4f3ce229"; let is_element_found = friends_ids.includes(element_to_search); }; // Returns false in both cases testIncludes();

Aunque element_to_search se tomó directamente de la lista de arrays de friends_ids devueltos, cuando intento buscarlo usando include , devuelve false por alguna razón, ya sea que lo busque como String o como ObjectId .

¿Tienes idea de lo que está pasando?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Array.prototype.includes compara cada elemento con la muestra hasta que encuentra una coincidencia. Los objetos se consideran iguales solo si hacen referencia a la misma instancia de la clase. Cuando llama a un constructor const element_to_search = ObjectId("60dcbb29118ea36a4f3ce229"); crea una nueva instancia que nunca ha estado en la matriz, incluso si su valor es el mismo.

Necesitas comparar escalares. Cadenas por ejemplo:

 friends_ids.map(f => f.toString()).includes("60dcbb29118ea36a4f3ce229");

o emita cadenas cuando construya los friends_ids en primer lugar para evitar el bucle adicional sobre la matriz.

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda