PHP MongoDb:$pull显示错误“;无法将$pull应用于非数组值;

PHP MongoDb:$pull显示错误“;无法将$pull应用于非数组值;,mongodb,mongodb-php,Mongodb,Mongodb Php,我正在使用mongodb&希望从团队集合中删除用户ID。我是这样做的 $where = array('_id' => new MongoId($_SESSION['team_id'])); $update = array('$pull' => array('log_report' => array('team_admins' => $teamId))); $mongoDb->update($where, $update); 这是我的错误

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

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

“致命错误:在C:\xampp\htdocs\datacollection\u web\core\u php\app\php\processing\removerightsasaadminteam.php:18中出现未捕获的异常‘MongoCursorException’,消息为‘localhost:27017:无法将$pull应用于非数组值’。”

我的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"]
    }
}
并且您希望从
团队管理员
列表中删除某些内容

你应该做的是:

collection.update(..., {$pull: {log_report.team_admins: [team_id]}})
注意点符号的使用。这里有更多信息:和

$update=array('$pull'=>array('log\u report.team\u admins'=>$teamId));