Mongodb 如何删除承运商订单中没有id字段的所有行项目,可能有多个承运商订单
我有一个mongo文档,其中我需要删除所有缺少id的行项目元素。问题是carrier_命令自己一个数组,以及行_项,也是一个数组。 文件结构如下:Mongodb 如何删除承运商订单中没有id字段的所有行项目,可能有多个承运商订单,mongodb,nosql,mongodb-query,Mongodb,Nosql,Mongodb Query,我有一个mongo文档,其中我需要删除所有缺少id的行项目元素。问题是carrier_命令自己一个数组,以及行_项,也是一个数组。 文件结构如下: { "carrierOrder": [ { "id": 1636354, "costs": { "totalAmount": 110, "lineItem": [ {
{
"carrierOrder": [
{
"id": 1636354,
"costs": {
"totalAmount": 110,
"lineItem": [
{
"amount": 110,
"deleted": false,
"id": 3464888,
"price": 55,
"qty": 2,
"code": {
"id": 135431,
"key": "1600",
"value": "Freight - flat"
}
}
]
},
"deleted": true,
"carrierPO": ""
},
{
"id": 1668540,
"costs": {
"totalAmount": 110,
"lineItem": [
{
"amount": 110,
"deleted": false,
"id": 3527307,
"price": 55,
"qty": 2,
"code": {
"id": 135431,
"key": "1600",
"value": "Freight - flat"
}
},
{
"amount": 110,
"deleted": false,
"price": 110,
"qty": 1,
"code": {
"id": 135431,
"key": "1600",
"value": "Freight - flat"
}
}
]
},
"deleted": false,
"carrierPO": ""
}
],
"id": 3949038,
"customId": "31428-26396"
}
我尝试了很多查询,最后我用下面的查询完成了
db.shipmentFormFieldData.update({"value.carrier_orders.$[].costs.line_items.$[].id":{$exists: false}},{$unset:{"value.carrier_orders.$[].costs.line_items":""}})
我想删除id字段缺失的所有行项目以下查询可以获得预期的输出:
db.shipmentFormFieldData.updateMany({},
{
$pull:{
"carrierOrder.$[].costs.lineItem":{
"id":null
}
}
})