MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Mongodb desenrola documentos aninhados


Eu sei que o que você está tentando fazer é possível com o MongoDB. O aggregate() O comando pode receber quantos argumentos você precisar.

No shell do mongo, um comando como este
db.collection.aggregate(
  { $project: {
    _id: 1,
    items: 1
  } },
  { $unwind: '$items' },
  { $unwind: '$items.images' }
);

irá desenrolar os items subdocumento, então as images subdocumento.

Com base no código da sua pergunta, talvez isso 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);