私のアプリケーションの特定の文書からサブ文書を削除しようとしていますが、期待した結果が得られません。データは次の形式で保存されます。特定の文書からサブ文書を削除するのに失敗します。Mongoose、MongoDB
{"_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);
しかし、これは全ての領域から製品を削除します。私はまた、次の形式でUpdate()に$ pullを使用しようとしましたが、これを動作させることができません。
await Region.update({ "_id": req.params.reg }, { "$pull": { "products": {"_id": req.params.id } } });
res.redirect("/regions");
ここで、リダイレクトは正常に動作し、エラーはありません。私は次のことを受け取る、この出力をCONSOLE.LOG場合:
{ n: 1, nModified: 0, ok: 1 }
何かアドバイスやポインタは、
おかげで素晴らしいことです!