2015-10-23 1 views
-1

Ici, j'ai créé une collection avec un seul documentmongodb carte du curseur en PHP

db.getCollection('example').insert({"example":1}); 

MongoDB - Cursor - Map

Sur la commande shell mongo, je suis en mesure d'obtenir la sortie en utilisant la commande curseur mongo carte. Cependant, j'ai du mal à trouver l'implémentation du pilote PHP équivalent. PHP Mongo Cursor. Des alternatives?

db.getCollection('example').find({"example":1},{"_id":1}).map(function(doc) { 
    return {'id': doc._id.str } 
}) 

Répondre

0

Vous pouvez trouver Doctrine de la mise en œuvre ArrayCollection ou similaire que, pour être utile avec leurs propres itérateurs carte doctrine méthodes/lib commune ou doctrine/collection ainsi. Dans mon cas particulier, je recommande d'implémenter un générateur simple avec un argument appelable (si vous devez quitter la fonctionnalité de chargement du curseur) ou simplement utiliser la fonction array_map de base autour du résultat de iterator_to_array avec l'argument Cursor. À la vôtre.

UPD: Ici exemple simple générateur:

php function map_traversable(callable $mapper, \Traversable $iterator) { foreach($iterator as $val) { yield $mapper($val); } } Dans ce cas, vous marcherez throught les données une fois.

+1

Comme vous pouvez le voir, cette question est clairement un doublon à OP [question précédente] (http://stackoverflow.com/questions/33307610/mongodb-get-id-as-string-in-find-query) et comme comme dit [ici] (http://chat.stackoverflow.com/transcript/message/26469064#26469064) la boucle 'array_map' ou' foreach' est le chemin à parcourir. – styvane