2010-10-23 5 views
3

S'il vous plaît noter, "user_id" dans ma collection plans n'est pas un object_id. Je l'ai stocké dans la collection plans pour référencer le _id de l'utilisateur dans la collection user_accounts. J'ai pensé à stocker les noms d'utilisateur dans toutes les collections afin de référencer l'utilisateur, mais ce ne serait pas une idée si l'utilisateur souhaite changer son nom d'utilisateur.Comment extraire l'identifiant d'objet dans mongodb et y chercher?

// Retrieve User ID 
$query = array("username" => $user_id); 
$fields = array("_id"); 
$user = $collection_user->findOne($query, $fields); 

// Retrieve plans made by user 
$query = array("user_id" => $user['_id']); 
$fields = array("plan_title"); 
$data = $collection_plans->find($query, $fields); 

Si je hardcode le _id dans la requête, il fonctionne bien comme suit:

// Retrieve plans made by user 
$query = array("user_id" => "4cc1790f6c0d49bf9424fc73"); 
$fields = array("plan_title"); 
$data = $collection_plans->find($query, $fields); 
+0

Avez-vous essayé var_dump ($ user) pour vous assurer que $ user ['_ id'] existe réellement? – mellowsoon

Répondre

4

On dirait que je devais le convertir en une chaîne.

$uid = $user['_id'] . ""; 
+1

Je pense que vous avez raison. La valeur de $ user ['_ id'] devrait être une instance de MongoId, et non une chaîne. Notez une façon "propre" de convertir en une chaîne: $ uid = (string) $ user ['_ id']; – mellowsoon