Node.js 在mongoDB中删除数组中的项

Node.js 在mongoDB中删除数组中的项,node.js,mongodb,Node.js,Mongodb,我有一个名为Subject的集合,其中有一个名为“game name”的文档,其结构如下: { "_id": "5234676432", "name": "game name", "questions": [ { "_id": "12345", "question": "question", "answer1": "1", "answer2": "2",

我有一个名为
Subject
的集合,其中有一个名为
“game name”
的文档,其结构如下:

{
    "_id": "5234676432",
    "name": "game name",
    "questions": [
        {
            "_id": "12345",
            "question": "question",
            "answer1": "1",
            "answer2": "2",
            "answer3": "3",
            "answer4": "4",
            "correctAns": 2
        },
        {
            "_id": "56789",
            "question": "question2",
            "answer1": "1",
            "answer2": "2",
            "answer3": "3",
            "answer4": "4",
            "correctAns": 3
        }
    ]
}
我想做的是删除用户单击的问题(假设他选择了id为
“12345”

我试着使用以下方法:

Subject.update({name:game},{$pull:{questions:{{u id:questionToDelete}})


但它似乎不起作用。

我希望这能解决你的问题

Subject.update({name: "game name"}, 
      {$pull: {"questions": {"_id.$oid": "12345"}}}, 
      {multi: true});

试试看。

我希望这能解决你的问题

Subject.update({name: "game name"}, 
      {$pull: {"questions": {"_id.$oid": "12345"}}}, 
      {multi: true});

再试一次。

因为你是在拉问题的id,而不是问题本身,这是不同的。我建议您重新设计您的模式。请您提供正确的示例数据。数据似乎有误。你说你的收藏名是,
游戏名
。但是您的查询将
主题
作为您的collection@avivLo那我怎么才能把问题本身拉出来呢?这也不能提取id。@Aravind我刚刚意识到我写的是一个集合而不是一个文档抱歉。“游戏名称”是记录“主题”是收集。因为你是拉问题的id,而不是问题本身,这是不同的。我建议您重新设计您的模式。请您提供正确的示例数据。数据似乎有误。你说你的收藏名是,
游戏名
。但是您的查询将
主题
作为您的collection@avivLo那我怎么才能把问题本身拉出来呢?这也不能提取id。@Aravind我刚刚意识到我写的是一个集合而不是一个文档抱歉。“游戏名”是记录“主题”是收藏。