Je sais que ce que vous essayez de faire est possible avec MongoDB. Le aggregate()
La commande peut prendre autant d'arguments que nécessaire.
Dans le shell mongo, une commande comme celle-ci
db.collection.aggregate(
{ $project: {
_id: 1,
items: 1
} },
{ $unwind: '$items' },
{ $unwind: '$items.images' }
);
déroulera les items
sous-document, puis les images
sous-document.
D'après le code de votre question, cela fonctionnera peut-être
$project = array(
'$project' => array(
'_id' => 1,
'items' => 1,
)
);
$unwind_items = array(
'$unwind' => '$items'
);
$unwind_images = array(
'$unwind' => '$items.images'
);
$query = $mongo->store->aggregate($project,$unwind_items,$unwind_images);