2017-11-03 13 views
1

私のアプリケーションの特定の文書からサブ文書を削除しようとしていますが、期待した結果が得られません。データは次の形式で保存されます。特定の文書からサブ文書を削除するのに失敗します。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 } 

何かアドバイスやポインタは、

おかげで素晴らしいことです!

答えて

1

私はこれを把握して、他の誰かがこれに悩まされている場合の参考に私の答えを追加しました。

Region.update({_id:req.params.reg}、{$プル:{ "製品":req.params.id}}

は、ここでは私のために働いコードました

誰かが同様の問題を発見した場合は、これが役に立ちます。

関連する問題