1

尝试使用来自其他集合(用户)的嵌入字段查询嵌套文档(消息集合)

这是我要查询的文档的示例:

array (
  '_id' => new MongoId("52454de22660b239178b4567"),
  'from_uid' => array (
    'uid' => '5231817277758e660c7202d7',
    'uname' => 'franc',),
  'to_uid' => '5231817277758e660c7202d7',
  'object' => 'improving',
  'content' => 'mongo mega newbie bro',
  'datetime' => '2013-09-27 11:20:34',
)

我会(如果可能的话,只需 1 个查询)获取并显示闲置字段:

  • uname(“from_uid”子数组的值)
  • 目的
  • 内容
  • 约会时间

我尝试了很多方法都没有成功,并且开始发疯。我最后一次尝试是:

$m = new MongoClient();
$db = $m->mydb;

try{
  $array_qry = iterator_to_array($db->message->find(array("to_uid" => $this->uid_logged), array( "_id" => 0, "from_uid" => array('from_uid.uid' => 0, 'from_uid.uname' => 1), "to_uid" => 0, "object" => 1, "content" => 1,  "datetime" => 1)));
}catch(MongoCursorException $e) {
  echo "error message: ".$e->getMessage()."<br/>";
  echo "error code: ".$e->getCode()."<br/>";
}

foreach ($array_qry as $k => $v) {
  print_r($v);
}

查询的第一个数组定义仅选择 to_uid 字段等于登录用户的 user_id 的消息(听起来很明显对吗?)。然后是用于选择字段的数组和子数组(可能是错误所在)。

我得到这个输出,警告肯定只是不返回任何结果的错误查询的结果:

error message: localhost:27017: Unsupported projection option: from_uid.uid
error code: 13097

Warning: Invalid argument supplied for foreach() in /var/www/nosql_portal/inc/classi/msg.class.php on line 128

任何帮助表示赞赏

4

0 回答 0