MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Est-il possible d'interroger directement les sous-documents à l'aide de mongoose ?

Oui, vous pouvez trouver directement le titre du message à partir du modèle utilisateur. comme ci-dessous

User.find({"posts.title": "Cats are cool"}, (err, users) => {
  if(err) {
    // return error
  }
  return res.send(users)
})

Cela renverra l'utilisateur avec tous les messages, pas seulement le titre du message correspondant. Donc, pour ne renvoyer que le titre de l'article correspondant, vous pouvez utiliser $ opérateur positionnel. comme cette requête

User.find({"posts.title": "Cats are cool"},
  {username: 1, "posts.$": 1}, // add that you need to project
  (err, users) => {
    if(err) {
      // return error
    }
    return res.send(users)
})

qui ne renvoient que le message correspondant