# Historique des modifications

Les modifications suivantes ont été apportées aux classes/fonctions/méthodes de cette extension.

### Driver PHP MongoDB 1.5.0

Il supporte toutes les nouvelles fonctionnalités de MongoDB 2.6, y compris :

- L'aggrégation peut maintenant retourner un curseur
- Les pipelines d'aggrégation peuvent maintenant être expliquées
- Possibilité de définir maxTimeMS pour les commandes et les requêtes
- Support transparant pour les nouvelles commandes basées sur l'API d'écriture MongoDB
- Nouvelle classe MongoWriteBatch (utilisant la nouvelle API d'écriture MongoDB)
- Support des fonctionnalités MongoDB Enterprise (i.e. Kerberos, LDAP, X509)
- Option pour affiner une latence acceptable des serveurs pour les lectures secondaires (secondaryAcceptableLatencyMS)

Dans cette version, quelques fonctionnalités du driver qui étaient documentées sont devenues obsolètes, et émettent désormais des notices quant à leur obsolescence. Ceci est valable pour :

- L'instanciation de la classe Mongo
- L'appel à la méthode MongoCursor::slaveOkay()
- L'utilisation des options "wtimeout" et "safe" pour les opérations en écriture de MongoCollection
- La manipulation des propriétés publiques des classes du coeur (par exemple, $collection->w)

> Note:

> Aucune fonctionnalité déclarée comme obsolète précédemment n'a été supprimée.

Modification de comportement :

- Le fait de définir l'option INI mongo.native_long émet désormais une erreur sur les plateformes 32-bits, et vaut TRUE par défaut pour les plateformes 64-bits.

### Driver PHP MongoDB 1.4.0

La série 1.4 a introduit des changements fondamentaux sur la façon dont les connexions sont créées vers les serveurs MongoDB. Le driver utilise désormais les flux PHP natifs, aussi, toutes les options des flux PHP peuvent être utilisées. De plus, le support d'un contexte de flux expérimental a été ajouté.

La série 1.4.x a également ajouté le support de MongoDB 2.4.x.

Cependant, l'amélioration la plus importe reste la gestion des jeux de réplication, et tout spécialement les noeuds dont le délai maximal d'attente est atteint ou ceux qui ne sont pas joignables pour diverses raisons. Cette version aborde également les problèmes avec les préférences de lecture via les noeuds mongo. Elle apporte également le support des connexions SSL, ainsi que des options pour les journaux et les connexions fsync.

### Driver PHP MongoDB 1.3.0

La série 1.3 introduit plusieurs modifications majeures à l'extension, comme la complète ré-écriture du gestionnaire de connexion (et la suppression du mécanisme de mise en file d'attente), le support des préférences de lecture et la modification de WriteConcerns devant être reconnu en introduisant une nouvelle classe MongoClient qui agit comme classe de remplacement pour la classe Mongo devenue pour l'occasion obsolète.

Le driver supporte maintenant la connexion à de multiples instances mongos (le routeur Mongo Shard) pour la balance de charge.

Mais aussi d'autres améliorations comme la fourniture de log pour un débogage simplifié du gestionnaire de connexion avec la classe MongoLog ainsi que le support du » Framework d'aggrégation via la méthode MongoCollection::aggregate().

### Modifications sur les méthodes existantes

Voici une liste de toutes les améliorations sur les méthodes existantes depuis leur création.

Version | Function | Description
--- | --- | ---
1.7.0 | MongoDB::execute | Cette méthode est devenue obsolète, sachant qu'un résultat d'une commande eval sous-jacente est devenu obsolète en MongoDB 3.0+.
1.6.0 | MongoClient::__construct | Ajout du support de "SCRAM-SHA-1" pour l'option "authMechanism".
| MongoCollection::count | Le second paramètre est maintenant un tableau d'options. Le fait de passer les paramètres limit et skip comme second et troisième paramètres, respectivement, est maintenant obsolète.
| MongoDB::getCollectionNames | Modification du premier paramètre pour devenir un tableau d'options. Avant la version 1.6.0, le premier paramètre était un booléen indiquant l'option "includeSystemCollections".
| MongoDB::listCollections | Modification du premier paramètre pour devenir un tableau d'options. Avant la version 1.6.0, le premier paramètre était un booléen indiquant l'option "includeSystemCollections".
1.5.0 | log_cmd_delete | Uniquement disponible lorsque connecté à MongoDB 2.6.0+
| log_cmd_insert | Uniquement disponible lorsque connecté à MongoDB 2.6.0+
| log_cmd_update | Uniquement disponible lorsque connecté à MongoDB 2.6.0+
| log_write_batch | Uniquement disponible lors d'une connexion à MongoDB 2.6.0+
| MongoBinData::__construct | La valeur par défaut passe de 2 (MongoBinData::BYTE_ARRAY) à 0 (MongoBinData::GENERIC).
| MongoClient::__construct | Ajout de "authMechanism", "gssapiServiceName" et "secondaryAcceptableLatencyMS".
| MongoClient::__construct | Ajout de "authSource".
| MongoCollection::aggregate | Ajout de l'argument optionnel options
| MongoCollection::batchInsert | Ajout de l'option "wTimeoutMS", qui remplace "wtimeout". Emets une alerte de niveau E_DEPRECATED lorsque "wtimeout" est utilisée. Ajout de l'option "socketTimeoutMS", qui remplace "timeout". Emets une alerte de niveau E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de niveau E_DEPRECATED lorsque "safe" est utilisée.
| MongoCollection::ensureIndex | Renommage de l'option "wtimeout" en "wTimeoutMS". Emets une alerte de niveau E_DEPRECATED lorsque "wtimeout" est utilisée. Renommage de l'option "timeout" en "socketTimeoutMS". Emets une alerte de niveau E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de niveau E_DEPRECATED lorsque "safe" est utilisée.
| MongoCollection::findOne | Ajout de l'argument optionnel options.
| MongoCollection::group | Ajout de l'option "maxTimeMS".
| MongoCollection::insert | Ajout de l'option "wTimeoutMS", qui remplace "wtimeout". Emets une alerte de niveau E_DEPRECATED lorsque "wtimeout" est utilisée. Ajout de l'option "socketTimeoutMS", qui remplace "timeout". Emets une alerte de niveau E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de niveau E_DEPRECATED lorsque "safe" est utilisée.
| MongoCollection::remove | Ajout de l'option "wTimeoutMS", qui remplace l'option "wtimeout". Emets une alerte de niveau E_DEPRECATED lorsque "wtimeout" est utilisée. Ajout de l'option "socketTimeoutMS", qui remplace l'option "timeout". Emets une alerte de niveau E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de niveau E_DEPRECATED lorsque "safe" est utilisée.
| MongoCollection::save | Ajout de l'option "wTimeoutMS", qui remplace l'option "wtimeout". Emets une alerte de type E_DEPRECATED lorsque "wtimeout" est utilisée. Ajout de l'option "socketTimeoutMS", qui remplace l'option "timeout". Emets une alerte de type E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de type E_DEPRECATED lorsque "safe" est utilisée.
| MongoCollection::toIndexString | Cette méthode est devenue obsolète.
| MongoCollection::update | Ajout de l'option "wTimeoutMS", qui remplace l'option "wtimeout". Emets une alerte de niveau E_DEPRECATED lorsque "wtimeout" est utilisée. Ajout de l'option "socketTimeoutMS", qui remplace l'option "timeout". Emets une alerte de niveau E_DEPRECATED lorsque "timeout" est utilisée. Emets une alerte de niveau E_DEPRECATED lorsque "safe" est utilisée.
| MongoCursor::slaveOkay | Cette méthode est devenue obsolète, en faveur de la méthode MongoCursor::setReadPreference et .
| MongoDB::command | Renommage de l'option "timeout" en "socketTimeoutMS". Emets une alerte de type E_DEPRECATED lorsque "timeout" est utilisée. Ajout du paramètre hash par référence.
1.4.5 | MongoCursor::batchSize | Avant la version 1.4.5, cette méthode lançait une exception de type MongoCursorException si le curseur avait déjà commencé son itération.
1.4.0 | MongoClient::__construct | Ajout de l'option "ssl" et du support de la connexion via SSL. Ajout de l'option "wTimeoutMS", qui remplace l'option "wTimeout". Emets une alerte de niveau E_DEPRECATED lorsque "slaveOkay" ou "timeout" est utilisé.
| MongoCursor::hint | L'argument index supporte maintenant les noms d'index comme valeur. Pour les versions antérieures à 1.4.0, sur les valeurs sous forme de tableau ou d'objet étaient acceptées.
| MongoCursor::setFlag | Ajout du support du drapeau n°3 (OPLOG_REPLAY). Les versions antérieures à 1.4.0 émettront une alerte indiquant que le drapeau n'est pas supporté..
| MongoDB::createCollection | Dans les versions antérieures à 1.4.0, les options étaient toutes des arguments de la méthode. La signature de la fonction dans ces anciennes versions était : public MongoCollectionMongoDB::createCollection stringname boolcappedFALSE intsize0 intmax0 La signification de ces options est la même que celle décrite ci-dessus, dans l'argument options.
| MongoId::__construct | Une exception est lancée lorsqu'une chaîne de caractères invalide est passée.
1.3.4 | MongoClient::__construct | Ajout des options "connectTimeoutMS" et "socketTimeoutMS".
| MongoCollection::batchInsert | Ajout de l'option "wtimeout".
| MongoCollection::ensureIndex | Ajout de l'option "wtimeout".
| MongoCollection::insert | Ajout de l'option "wtimeout".
| MongoCollection::remove | Ajout de l'option "wtimeout".
| MongoCollection::update | Ajout de l'option "wtimeout".
1.3.3 | MongoClient::getReadPreference | La valeur retournée a changé pour être consistante avec la méthode MongoClient::setReadPreference. La valeur type a été modifiée, passant d'un nombre à une chaîne de caractères, la valeur type_string a été supprimée, et la valeur tagsets exprime désormais les tags sous la forme d'une paire clé/valeur, au lieu d'une chaîne dont les valeurs étaient séparées par une virgule.
| MongoCollection::getReadPreference | La valeur retournée a changé pour être consistante avec la méthode MongoCollection::setReadPreference. La valeur type a été modifiée, passant d'un nombre à une chaîne de caractères, la valeur type_string a été supprimée, et la valeur tagsets exprime maintenant les tags sous la forme d'une paire clé/valeur, au lieu d'une chaîne dont les valeurs sont délimitées par une virgule.
| MongoDB::getReadPreference | La valeur retournée a changée pour être consistante avec la méthode MongoDB::setReadPreference. La valeur type a été changée, passant d'un nombre à une chaîne de caractères, la valeur type_string a été supprimée, et la valeur tagsets exprime maintenant les tags sous la forme d'une paire clé/valeur, au lieu d'une chaîne dont les valeurs étaient séparées par une virgule.
1.3.0 | MongoClient::close | Le paramètre connection a été ajouté. Avant cette version, seule la connexion en écriture était fermée par cette méthode.
| MongoClient::__construct | Ajout des options "readPreference", "readPreferenceTags", "w" et "wTimeout".
| MongoCollection::batchInsert | Ajout de l'option "w".
| MongoCollection::ensureIndex | Ajout de l'option "w". Le paramètre options n'accepte plus de booléen pour signifier un index unique. A la place, vous devez utiliser la syntaxe array('unique' => true).
| MongoCollection::insert | Ajout de l'option "w". Le paramètre options n'accepte plus de booléen pour indiquer une écriture reconnue. A la place, utilisez la syntaxe array('w' => 1) (comportement par défaut de MongoClient).
| MongoCollection::remove | Ajout de l'option "w". Le paramètre options n'accepte plus de booléen pour indiquer "justOne". A la place, utilisez la syntaxe array('justOne' => true).
| MongoCollection::update | Ajout de l'option "w". Le paramètre options n'accepte plus de booléen pour indiquer un upsert. A la place, vous devez utiliser la syntaxe array('upsert' => true).
| MongoDB::listCollections | Ajout du paramètre includeSystemCollections.
| MongoGridFSCursor::key | L'_id du document est retourné sous forme de chaîne de caractères, sachant que la clé doit être unique. Avant la version 1.3.0, filename était retourné.
1.2.11 | Mongo::getPoolSize | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| Mongo::getSlave | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| Mongo::getSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| Mongo::poolDebug | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| Mongo::setSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| Mongo::switchSlave | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoBinData::__construct | Lance une alerte de niveau E_DEPRECATED lorsque le second argument n'est pas utilisé. La valeur par défaut du paramètre type peut changer dans de futures versions.
| MongoCollection::ensureIndex | Lance une alerte de niveau E_DEPRECATED lorsque le paramètre options est de type scalar.
| MongoCollection::getSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoCollection::group | Lance une alerte de niveau E_DEPRECATED lorsque le paramètre options est de type scalar.
| MongoCollection::remove | Lance une alerte de niveau E_DEPRECATED lorsque le paramètre options est de type scalar.
| MongoCollection::setSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoCollection::update | Lance une alerte de niveau E_DEPRECATED lorsque le paramètre options est de type scalar.
| MongoCursor::doQuery | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoDB::authenticate | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé. Veuillez passer les détails d'authentification au constructeur.
| MongoDB::forceError | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoDB::getSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoDB::prevError | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoDB::resetError | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoDB::setSlaveOkay | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoPool::getSize | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoPool::info | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
| MongoPool::setSize | Lance une alerte de niveau E_DEPRECATED lorsqu'utilisé.
1.2.10 | MongoClient::getHosts | Le support de l'absence de jeu de réplication a été ajouté. Les éléments de tableau retournés incluent à présent également le hostname et le port.
1.2.7 | MongoCollection::batchInsert | Le drapeau "continueOnError" a été ajouté.
1.2.5 | MongoGridFS::storeUpload | Modification du second paramètre en un tableau de méta-données. Avant la version 1.2.5, le second paramètre étaient une chaîne optionnelle permettant d'écraser le nom du fichier.
1.2.0 | MongoClient::close | Avant la version 1.2.0, le driver n'utilisait pas les connexions persistentes par défaut, et toutes les connexions étaient fermées dès que une connexion MongoDB sortait du scope. Depuis la version 1.2.0, ce n'est plus le cas et c'est une mauvaise idée d'appeler la méthode close car vous pourriez finir par surcharger le serveur avec des connexions à haute charge.
| MongoClient::__construct | Ajout des options "username" et "password". Suppression de l'option "persist", toutes les connexions sont désormais persistantes. Le paramètre peut tout de même être utilisé, il sera simplement ignoré. "persist" Si la connexion doit être persistante. La chaine représentant la valeur est utilisée comme identifiant de connexion, ainsi deux instances de MongoClient qui sont initialisées avec array("persist" => "foobar") vont partager la même connexion à la base, alors que une instance initialisée avec array("persist" => "barbaz") utilisera une connexion différente. Le paramètre "replicaSet" accepte maintenant une chaine, pas un booléen.
| MongoCollection::ensureIndex | Ajout de l'option "timeout".
| MongoCollection::insert | Ajout de l'option "timeout".
| MongoCollection::remove | Ajout de l'option "timeout".
| MongoCollection::save | Ajout de l'option "timeout".
| MongoCollection::update | Ajout de l'option "timeout".
| MongoDB::command | Ajout du paramètre options avec une seule option : "timeout".
1.1.0 | MongoCursor::info | Ajout de quelques champs, incluant id (l'identifiant de curseur), at (le compteur du driver du document courant), numReturned (le nombre retourné par le serveur dans le batch courant), et server (le serveur sur lequel la requête a été émise ; utile en plus de ).
1.0.11 | MongoCollection::ensureIndex | L'option "safe" déclenchera le failover du primaire, si nécessaire. MongoException sera envoyée si le nom de l'index (généré ou défini) est plus long que 128 octets.
| MongoCollection::insert | Se déconnecte lors d'erreurs "not master" si "safe" est utilisé.
| MongoCollection::remove | Se déconnecte lors d'erreurs "not master" si "safe" est utilisé.
| MongoCollection::save | Se déconnecte lors d'erreurs "not master" si "safe" est utilisé.
| MongoCollection::update | Se déconnecte lors d'erreurs "not master" si "safe" est utilisé.
1.0.10 | MongoCursor::info | Ajout du champ started_iterating, un booléen indiquant si le curseur est antérieur ou postérieur à la requête.
1.0.9 | MongoClient::__construct | Ajout de l'option "replicaSet".
| MongoCollection::batchInsert | Ajout de la possibilité de passer des entiers à l'option "safe" (auparavant, seuls les booléens étaient acceptés). Ajout de l'option "fsync".
| MongoCollection::insert | Ajout de la possibilité de passer des entiers à l'option "safe" (auparavant, seuls les booléens étaient acceptés). Ajotu de l'option "fsync". Le type retourné a changé. C'est maintenant un tableau contenant les informations d'erreur si l'option "safe" est utilisée, sinon, c'est un booléen, comme auparavant.
| MongoCollection::remove | Ajout de la capacité de passer des entiers à l'option "safe" (n'acceptaient que des booléens avant). Ajout de l'option "fsync". Le type retourné a été modifié en un tableau contenant les informations de l'erreur si l'option "safe" est utilisée, sinon, ce sera un booléen comme auparavant.
| MongoCollection::save | Ajout de l'option "fsync".
| MongoCollection::update | Ajout de la possibilité de passer des entiers à l'option "safe" (auparavant, seuls les booléens étaient acceptés). Ajout de l'option "fsync". Le type retourné a été modifié en un tableau contenant les informations de l'erreur si l'option "safe" est utilisé, sinon, ce sera un booléen comme auparavant.
1.0.7 | MongoCollection::count | Ajout des paramètres limit et skip comme second et troisième paramètres, respectivement.
1.0.5 | MongoCollection::batchInsert | Ajout du paramètre options.
| MongoCollection::ensureIndex | Ajout de l'option "name" pour écraser la création du nom de l'index.
| MongoCollection::remove | Modification du second paramètre en un tableau d'options. Pre-1.0.5, le second paramètre était un booléen indiquant l'option "safe".
| MongoCollection::save | Ajout du paramètre options.
| MongoCollection::update | Ajout de l'option "safe".
1.0.2 | MongoClient::__construct | Le constructeur a changé pour accepter une tableau. Avant 1.0.2, le constructeur acceptait les paramètres suivants : server Nom du serveur. connect Paramètre optionnel indiquant si le constructeur doit se connecter à la base avant de retourner l'objet. Par défaut TRUE. persistent Si la connexion doit être persistante. paired Si la connexion doit être pairée.
| MongoCollection::ensureIndex | Le paramètre options passe de booléen à un tableau. En version Pre-1.0.2, le second paramètre était une valeur booléenne optionnelle spécifiant un index unique.
| MongoCollection::insert | Modification du second paramètre en un tableau d'options. Avant la version 1.0.2, le second paramètre était un booléen indiquant l'option "safe".
1.0.1 | MongoCollection::insert | Lance une exception MongoCursorException si l'option "safe" est définie et que l'insertion échoue.
| MongoCollection::update | Le paramètre options passe de booléen à un tableau. En version Pre-1.0.1, le second paramètre était une valeur booléenne optionnelle, spécifiant un upsert.