J'ai une base de données dans MongoDB, voici un exemple de collection.

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

Ensuite, j'ai un autre tableau contenant les mots-clés de recherche

["hike","talk"]

J'ai donc besoin d'un résultat comme celui-ci.

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

Aidez-moi à résoudre ce problème. J'utilise mongoose ODM et express.js

0
Thilina jayakody 26 août 2020 à 10:54

2 réponses

Meilleure réponse

Vous pouvez utiliser l'opérateur $in. documentation

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

1
Vishnu 26 août 2020 à 08:17

Vous pouvez utiliser $ ou opérateur pour voir si l'une des multiples requêtes du tableau est vraie. Donc, pour le code ci-dessus, vous pouvez interroger comme:

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

Ce qui dit trouver toutes les entrées dans notre base de données qui satisfont que l'une des conditions (la randonnée existe dans notre tableau similaire ou la conversation existe dans notre tableau similaire) est satisfaite.

1
Abhineet 26 août 2020 à 13:27