我正在使用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' with message' localhost:27017:无法将$ pull应用于非数组值'在C:\ xampp \ htdocs \ datacollection_web \ core_php \ app \ php \ processing \ removeRightsAsAdminTeam.php:18"
我的Mongodb数据库结构就是这个
"log_report": {
"team_admins": [
"54c107f264363d840c000030",
"54c2085764363d6c17000029",
"54c2088d64363dfc12000029",
"54c1075864363d081500002a"
],
我没有得到它?
答案 0 :(得分:0)
$pull
的第二个参数需要是一个列表,而不是一个字典。
使用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-documents和http://docs.mongodb.org/manual/reference/operator/update/pull/