J'ai une collection comme ce qui suit: -
{
_id: 5,
"org_name": "abc",
"items": [
{
"item_id": "10",
"data": [
// Values goes here
]
},
{
"item_id": "11",
"data": [
// Values goes here
]
}
]
},
// Another sub document
{
_id: 6,
"org_name": "sony",
"items": [
{
"item_id": "10",
"data": [
// Values goes here
]
},
{
"item_id": "11",
"data": [
// Values goes here
]
}
]
}
Chaque document sous correspond à chaque organisation et chaque organisation a un array
de items
en eux.
Ce dont j'ai besoin est d'obtenir les éléments individuels sélectionnés de la matrice items
, en fournissant item_id
.
Je l'ai déjà essayé ceci: -
db.organizations.find({"_id": 5}, {items: {$elemMatch: {"item_id": {$in: ["10", "11"]}}}})
Mais il revient soit la liste des éléments avec * item_id * "10" OR
la liste des éléments avec * item_id * "11".
Ce dont j'ai besoin, c'est, ce sont les valeurs get pour item_id 10 et 11 pour l'organisation "abc". S'il vous plaît aider.
Merci pour la réponse romaine. Mais ce dont j'ai besoin, c'est de ne pas sélectionner * tous * les "items". Désolé si je n'étais pas clair, mais ce dont j'ai besoin est de spécifier le 'item_id's des éléments dont j'ai besoin des données. – Sparky
@Sparky ok, voir mis à jour, nous verrons si je vous ai compris maintenant :). Vous devez spécifier 'items' dans le premier paramètre de' find'. –
Je pense que vous comprenez ce dont j'ai besoin maintenant, mais la requête mise à jour me donne également tous les éléments dans l'organisation donnée (_id: 5) :( – Sparky