Tengo una base de datos en MongoDB, aquí hay una colección de muestra.

[
  {
    id:123,
    name: "name1",
    likes: ["swim","run","walk"]
  },
  {
    id:123,
    name: "name1",
    likes: ["swim","hike","run"]
  },
  {
    id:123,
    name: "name1",
    likes: ["talk","run","sing"]
  }
]

Entonces tengo otra matriz que contiene las palabras clave de búsqueda

["hike","talk"]

Entonces necesito un resultado como este.

  {
    id:123,
    name: "name1",
    likes: ["swim","hike","run"]
  },
  {
    id:123,
    name: "name1",
    likes: ["talk","run","sing"]
  }

Ayúdame a solucionar esto. Yo uso mongoose ODM y express.js

0
Thilina jayakody 26 ago. 2020 a las 10:54

2 respuestas

La mejor respuesta

Puede utilizar el operador $in. documentación

MyModel.find({likes : {$in : ['hike', 'talk']}}, (err, data) => {
  if (err) {
    console.log(err);
  } else {
    console.log(data);
  }
});

1
Vishnu 26 ago. 2020 a las 08:17

Puede usar $ o el operador para ver si alguna de las múltiples consultas en la matriz es verdadera. Entonces, para el código anterior, puede consultar como:

db.collection.find({$or:[{likes:"hike"},{likes:"talk"}]})

Lo que dice que encuentre todas las entradas en nuestra base de datos que satisfagan que se satisfaga cualquiera de las condiciones (la caminata existe en nuestra matriz similar o la conversación existe en nuestra matriz similar).

0
Abhineet 26 ago. 2020 a las 13:27