È possibile utilizzare l'hash o la raccolta di tipi mongo in base alle proprie esigenze.
Hash: Memorizza e recupera il valore come array associativo.
Collezione: Memorizza e recupera il valore come matrice indicizzata numerica.
Ad esempio:
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
class Category
{
/**
* @MongoDB\Field(name="tags", type="collection")
*/
private $tags;
/**
* @MongoDB\Field(name="country_wise_total_count", type="hash")
*/
private $country_wise_total_count;
}
I dati vengono memorizzati come ad esempio:
"tags": [
"man",
"boy",
"male",
"sandal",
"cloth",
"army boots",
"boots",
"sport shoes",
"school",
"casual",
"office"
],
"country_wise_total_count": {
"NP": NumberInt(7),
"US" : NumberInt(10)
}
ha lavorato per me, grazie. Non è chiaro il motivo per cui non è specificato nei documenti http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#doctrine-mapping-types –
Che tipo di mappatura dovremmo usare per aggiornare la matrice per aggiungere un'altra chiave: elemento valore? – Sekai
@Sekai: Non capisco la domanda. Il tipo 'collection' esegue il valore PHP tramite' array_values () 'prima di scriverlo nel campo MongoDB (per reindicizzare le chiavi numericamente). La strategia 'hash' lancia il valore PHP su un oggetto (ad esempio stdClass in PHP) per garantire che sia salvato come oggetto BSON. Nessuna delle coppie chiave/valore all'interno dei valori di raccolta/hash viene mappata (questo è ciò che le distingue dai documenti incorporati (EmbedOne e EmbedMany). – jmikola