J'essaye de faire une requête qui recherche une valeur dans beaucoup de sous-réseaux en utilisant MongoDB. Le schéma db ressemble à ceci:MongoDB - Comment rechercher une valeur dans des tableaux imbriqués?
user:
[
{
name: "SomeName",
dvd: [
{
collectionName: "ActionDVDs",
movies: [
{
_id: ObjectId(X),
mark: 10
},
{
_id: ObjectId(Y),
mark: 8
}
}
]
}
...
]
Je sais que trois informations: user.name, dvd.collectioName, movies._id.
Par exemple, j'essaie de savoir s'il y a un utilisateur nommé "SomeName", ayant un film avec l'ObjectId (X) dans la collection de DVD nommée "ActionDVDs".
J'ai déjà essayé cette requête:
user.findOne(
{
$and: [
{name: "SomeName"},
{dvd : {
$elemeMatch: { name: "ActionDVDs" }
},
{movies: {
$elemMatch: { _id: ObjectId(X) }
}
]
})
Toute idée?
Cette réponse fonctionne bien. Merci :) – Day