从Mongo文档的子数组中删除元素

5

我正在尝试从Mongo文档中删除子数组元素。我的文档(记录)如下:

{
    "_id" : 1,
    ...,
    "team" : {
        "players" : [{
            "name" : "A B",
            "birthday" : new Date("11/11/1995")
          }, {
            "name" : "A C",
            "birthday" : new Date("4/4/1991")
          }],
        "matches" : [{
            "against" : "Team B",
            "matchDay" : new Date("11/16/2012 10:00:00")
          }]
      }
}

现在我想从我的文档中删除 "A B" 玩家。我尝试了以下操作:
$result = $collection->update(
    array('_id' => 1), 
    array('$pull' => array('team.players.name' => 'A B'))
);

结果看起来还不错

(
    [updatedExisting] => 1
    [n] => 1
    [connectionId] => 8
    [err] => 
    [ok] => 1
)

但是播放器仍然存在于文档中。
谢谢!
1个回答

8
您的更新对象应该像这样:

您的更新对象应该像这样:

{
    "$pull": {
        "team.players": {
            name: "A C"
        }
    }
}

所以在 PHP 中,它将是:

$result = $collection->update(
    array('_id' => 1), 
    array('$pull' => 
        array('team.players' => array('name' = > 'A B'))
    )
);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接