Możesz użyć skrótu typu mongo lub kolekcji jako swoich potrzeb.
Hash: Przechowuje i pobiera wartość jako tablicę asocjacyjną.
Kolekcja: Przechowuje i pobiera wartość jako tablicę indeksowaną.
Na przykład:
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;
}
Dane są przechowywane takie jak:
"tags": [
"man",
"boy",
"male",
"sandal",
"cloth",
"army boots",
"boots",
"sport shoes",
"school",
"casual",
"office"
],
"country_wise_total_count": {
"NP": NumberInt(7),
"US" : NumberInt(10)
}
pracował dla mnie, dzięki. Nie jest jasne, dlaczego nie podano tego w dokumentach http://docs.doctrine-project.org/projects/doctrine-mongodb-odm/en/latest/reference/basic-mapping.html#doctrine-mapping-types –
Jaki rodzaj mapowanie należy użyć do aktualizacji tablicy, aby dodać kolejny klucz: element value? – Sekai
@Sekai: Nie rozumiem pytania. Typ 'collection' uruchamia wartość PHP przez' array_values () 'przed zapisaniem jej w polu MongoDB (w celu ponownego zindeksowania klawiszy numerycznie). Strategia 'hash' rzuca wartość PHP na obiekt (np. StdClass w PHP), aby upewnić się, że jest zapisany jako obiekt BSON. Żadna z par klucz/wartość w obrębie wartości kolekcji/hash nie jest odwzorowana (to właśnie odróżnia je od osadzonych dokumentów (EmbedOne i EmbedMany) – jmikola