【发布时间】:2014-07-11 02:20:21
【问题描述】:
您好,我有两个收藏,一个是我关注的所有人,另一个是他们在 Twitter 和 Facebook 等社交网站上发布的内容。
以下集合具有每个用户的提要集合的_id 的子数组,每个状态具有单词owner 并且具有所有者的ObjectId,与以下键相同这里是一个示例
'_id' => new MongoId("REMOVED"),
'following' =>
array (
'0' => 'ObjectId("53bf464ee7fda8780c8b4568")',
'1' => 'ObjectId("53b00ab5e7fda8304b8b4567")',
),
'owner' => new MongoId("53b9ea3ae7fda8863c8b4123"),
在提要中你会看到下面的following.0状态
array (
'_id' => new MongoId("REMOVED"),
'owner' => new MongoId("53bf464ee7fda8780c8b4568"),
'status' => ' love this video - Pedigree Shelter dogs http://youtube.com/watch?v=5v5Ui8HUuN8',
'timestamp' => new MongoDate(1405044327, 565000),
)
我遇到的问题是,虽然我可以逐个循环,但由于某种原因无法进行 $or 搜索查询。
collection = static::db()->feed;
$where=array( '$or' => array(array('owner' => new MongoId($following.0)))));
$feed = $collection->find($where);
return $feed;
现在我明白我将不得不以某种方式循环 $where=array( '$or' => array(array('owner' => new MongoId($following.0))))); 但我只是不能 100% 确定如何执行此操作。
更新 根据下面的答案,我必须编辑返回的数组 - 现在我只能手动完成这项工作,似乎无法让 PHP 脚本来完成它
答案返回
Array ( [owner] => Array ( [$in] => Array ( [0] => new MongoId("53bf464ee7fda8780c8b4568") [1] => new MongoId("53b00ab5e7fda8304b8b4567") ) ) )
正确:
Array ( "owner" => Array ( '$in' => Array ( "0" => new MongoId("53bf464ee7fda8780c8b4568"), "1" => new MongoId("53b00ab5e7fda8304b8b4567") ) ) )
我不知道还有什么方法可以让它工作。 当前的PHP
$collection = static::db()->following;
$following = $collection->findOne(array ('owner' => new MongoId($_SESSION['user_information'][0]['_id'])));
$follow = $following['following'];
$collection = static::db()->feed;
$where=array("owner" => array( '$in' =>$follow));
print_r($where);
$feed = $collection->find($where);
print_r($feed);
return $feed;
我已经修复了集合的一个小问题,现在返回数组显示
Array ( [owner] => Array ( [$in] => Array ( [0] => MongoId Object ( [$id] => 53bf464ee7fda8780c8b4568 ) [1] => MongoId Object ( [$id] => 53b00ab5e7fda8304b8b4567 ) ) ) )
但是我仍然无法让它返回像这样的提要
array (
'_id' => new MongoId("53bf4667e7fda8700e8b4567"),
'owner' => new MongoId("53bf464ee7fda8780c8b4568"),
'status' => ' love this video - Pedigree Shelter dogs http://youtube.com/watch?v=5v5Ui8HUuN8',
'timestamp' => new MongoDate(1405044327, 565000),
)
当我使用以下内容时问题已解决
var_dump(iterator_to_array($feed));
【问题讨论】: