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

Mongodb déroule les documents imbriqués

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);