我正在开发产品开发数据库。每个产品都包含多个项目和服务。每个项目都有几个属性,我有一个项目集合。因此,我与许多人有许多关系。
我要删除产品内的商品。
我尝试了$pull
,但进行了更新,但没有任何运气。
据我了解,我需要先查找文档,然后使用$pull
删除嵌套的文档。
这是我的更新路线:
main.route("/Producto/<string:prd_id>/<string:itm_id>/Borrar" , methods= ['GET','POST'])
@login_required
def borraprditm(prd_id,itm_id):
if request.method == 'POST':
productos.update_one({'comp':usuario['comp_id'],"prd:id":prd_id},{ "$pull": {"items.itm_id": {"itm_id": itm_id}}})
flash('El Elemento ha sido eliminado', 'danger')
return redirect(url_for('main.producto'))
return render_template('prditmdelete.html')
这是我的文档
_id : 5cf572fc341026b937931734
comp : 13847
codigo : "prueba"
descripcion : "prueba 2"
um : "Prd"
cantidad : 0
precio : 0
prd_id : "0344131"
items :Array
0 : Object
_id : 5cf18a08cf6ea6c98dd7861e
comp : 13847
codigo : "750-881"
descripcion : "PFC 1Mb, CoDeSyS 2.3 - Mca WAGO"
um : "Pza"
precio : 1234
itm_id : "0645566"
1 : Object
_id : 5cf18a13cf6ea6c98dd7861f
comp : 13847
codigo : "750-8202"
descripcion : "PFC-200 Linux"
um : "Pza"
precio : 3453
itm_id : "0915059"
2 : Object
_id : 5cf18a20cf6ea6c98dd78620
comp : 13847
codigo : "jack"
descripcion : "tapa belden nodo"
um : "Pza"
precio : 20
itm_id : "0918133"
答案 0 :(得分:0)
您需要告诉$pull
要从哪个数组提取,然后告诉如何找到要提取的子文档:
{"$pull": {"items": {"itm_id": itm_id}}}
这意味着:
{"itm_id": itm_id}
相匹配的所有子文档查看更多详细信息和示例on the MongoDB documentation