sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongodb desenrolla documentos anidados

Sé que lo que intentas hacer es posible con MongoDB. El aggregate() El comando puede tomar tantos argumentos como necesite.

En el shell de mongo, un comando como este

db.collection.aggregate(
  { $project: {
    _id: 1,
    items: 1
  } },
  { $unwind: '$items' },
  { $unwind: '$items.images' }
);

desenrollará los items subdocumento, luego las images subdocumento.

Basado en el código de su pregunta, tal vez esto funcione

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