PHP-MongoDb:$pull显示错误" Cannot apply $pull to a non-array value"



我正在使用mongodb&希望从团队集合中删除用户的ID。我这样做如下。

    $where = array('_id' => new MongoId($_SESSION['team_id']));
    $update = array('$pull' => array('log_report' => array('team_admins' =>  $teamId)));
    $mongoDb->update($where, $update);

它显示错误

"致命错误:未捕获异常'MongoCursorException',在C:\examplep\htdocs\datacollection_web\core_php\app\php\processing\removeRightsAdminTeam.php中显示消息'localhost:27017:无法将$pull应用于非数组值':18"

我的Mongodb数据库结构是这个

"log_report": {
"team_admins": [
  "54c107f264363d840c000030",
  "54c2085764363d6c17000029",
  "54c2088d64363dfc12000029",
  "54c1075864363d081500002a"
],

我不明白???

$pull的第二个参数需要是列表,而不是dict。

使用MongoDB的表示法(因为PHP很吵,我不擅长PHP),下面是您要做的:

collection.update(..., {$pull: {log_report: {team_admins: team_id}}}

我假设你的数据是这样的:

{
    _id: "team1",
    log_report: {
        team_admins: ["team1", "team2", "team3"]
    }
}

并且您希望从team_admins列表中删除某些内容。

应该做的是:

collection.update(..., {$pull: {log_report.team_admins: [team_id]}})

注意点符号的使用。更多信息请点击此处:http://docs.mongodb.org/manual/tutorial/query-documents/#embedded-文件和http://docs.mongodb.org/manual/reference/operator/update/pull/

最新更新