2010-10-23 85 views
3

请注意,我的plans集合中的“user_id”不是object_id。我将它存储在plans集合中以引用user_accounts集合中的用户_id。我想过为了引用用户而在所有集合中存储用户名,但如果用户希望更改他/她的用户名,则这不是个想法。如何在mongodb中取出对象ID并进行搜索?

// 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); 

如果我硬编码_id到查询正常工作如下:

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

您是否尝试使用var_dump($ user)来确保$ user ['_ id']实际存在? – mellowsoon 2010-10-23 03:34:49

回答

4

貌似我不得不将其转换成字符串。

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

我认为你是对的。 $ user ['_ id']的值应该是MongoId的一个实例,而不是一个字符串。注意转换为字符串的“干净”方式是$ uid =(string)$ user ['_ id']; – mellowsoon 2010-10-23 03:37:33

相关问题