从特定文档中删除子文档失败,Mongoose,MongoDB

从特定文档中删除子文档失败,Mongoose,MongoDB,mongodb,mongoose,Mongodb,Mongoose,我正在尝试从我的应用程序中的特定文档中删除子文档,但未收到预期结果。数据以以下格式存储: {"_id": "59fc7eccf0579ad8882b54bb", "__v": 0, "name": "manchester", "products": [ { "_id": "59fc7eccf0579ad8882b54bf", "__v": 0, "urn": "test01", "cate

我正在尝试从我的应用程序中的特定文档中删除子文档,但未收到预期结果。数据以以下格式存储:

    {"_id": "59fc7eccf0579ad8882b54bb",
    "__v": 0,
    "name": "manchester",
    "products": [
      {
        "_id": "59fc7eccf0579ad8882b54bf",
        "__v": 0,
        "urn": "test01",
        "category": "cat1",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c0",
        "__v": 0,
        "urn": "test02",
        "category": "cat1",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c1",
        "__v": 0,
        "urn": "test03",
        "category": "cat2",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c2",
        "__v": 0,
        "urn": "test04",
        "category": "cat2",
      }
    ]
  },
  {
    "_id": "59fc7eccf0579ad8882b54bc",
    "__v": 0,
    "name": "leeds",
    "products": [
      {
        "_id": "59fc7eccf0579ad8882b54bf",
        "__v": 0,
        "urn": "test01",
        "category": "cat1",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c0",
        "__v": 0,
        "urn": "test02",
        "category": "cat1",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c1",
        "__v": 0,
        "urn": "test03",
        "category": "cat2",
      },
      {
        "_id": "59fc7eccf0579ad8882b54c2",
        "__v": 0,
        "urn": "test04",
        "category": "cat2",
      }
    ]
  }
有多个区域,每个区域存储相同的产品。我希望能够从每个地区删除一个产品,但将其保留在其他地区

我尝试了以下方法:

    const item = await Region.find({ "_id": req.params.reg }).populate('products', null, {
    _id: { $in: req.params.id }}).exec();
    await item[0].products[0].remove()
    await item[0].products[0].save();
    res.json(item);
{ n: 1, nModified: 0, ok: 1 }
但是,这会将产品从所有区域中删除。我还尝试使用以下格式的$pull-on-Update(),但无法使其正常工作

    await Region.update({ "_id": req.params.reg }, { "$pull": { "products": {"_id": req.params.id  } } });
    res.redirect("/regions");
在这里,重定向工作正常,没有错误。如果I console.log从中输出,我将收到以下信息:

    const item = await Region.find({ "_id": req.params.reg }).populate('products', null, {
    _id: { $in: req.params.id }}).exec();
    await item[0].products[0].remove()
    await item[0].products[0].save();
    res.json(item);
{ n: 1, nModified: 0, ok: 1 }
任何建议或建议都很好


谢谢

我已经设法解决了这个问题,添加了我的答案作为参考,以防其他人陷入困境

update({u id:req.params.reg},{$pull:{“产品”:req.params.id}}

是我在这里工作的代码

希望这对其他人发现类似问题有所帮助