2012-07-14 7 views
0

Je fais de cette façon:Comment obtenir _id MongoDB/php?

$cursorLocations = $collection->find(array("locationName" => $locationName))->limit(1); 

if ($cursorLocations->count(true) == 1) { 
    $idLocations = $cursorLocations->getNext(); 
    echo $idLocations["_id"]; 
} 

Je me suis immédiatement excuse si cette question a été, mais lu la documentation n'a pas trouvé une réponse.

Peut-être un autre moyen d'obtenir le _id?

+0

essayer simple citant _id – DrinkJavaCodeJava

Répondre

0

à Mongo:

db.collection.find({'field': 'value'}, {'_id' : 1}); 

en PHP:

$cursorLocations = $collection->find(array("locationName" => $locationName), array('_id' => 1))->limit(1); 

Le code ci-dessus limitera votre requête pour récupérer uniquement le champ _id et non les autres domaines, vous auriez encore extraire la valeur de ce champ à partir du résultat de la fonction find() - de l'objet $cursor, comme dans:

$_id = $cursorLoactions[`_id`]; 

Il y a aussi une méthode MongoCursor key() qui renvoie la _id actuelle:

http://www.php.net/manual/en/mongocursor.key.php

Vous pouvez le faire:

$cursorLocations = $collection->find(array("locationName" => $locationName))->limit(1); 
$_id = $cursorLocations->key(); 
+0

Merci pour votre message. Avez-vous écrit? Aucune erreur, mais il affiche NULL. –

+0

@ArtPip Je vois qu'il y a une erreur de syntaxe dans la partie PHP où il y a un ")" manquant à la fin de la fonction 'find (...)', je viens de poster une modification à ma réponse, donc j'espère Maintenant, travaillez pour vous :) – techexpert

+0

@ArtPip.sorry, mais pourquoi utilisez-vous la fonction 'getNext()'? Essayez-vous d'obtenir le '_id' de l'enregistrement suivant ou de l'enregistrement en cours? – techexpert

Questions connexes