简体   繁体   English

如何查找和更新 mongoDb arrays 数组中的对象?

[英]how to find and update objects in an array in mongoDb arrays?

This is the Mongo db collection这是 Mongo 数据库集合

{
"_id": "62035cd8a76fcc0e09f46c22",
"particulars":[
{
                "serialNo": 1,
                "item": "desk",
                "link": "http//",
                "images": "http//",
                "quantity": 13,
                "unitPrice": 100,
                "amount": 1300
            },
            {
                "serialNo": 2,
                "item": "desk",
                "link": "http//",
                "images": "http//",
                "quantity": 13,
                "unitPrice": 100,
                "amount": 1300
            },
            {
                "serialNo": 3,
                "item": "desk",
                "link": "http//",
                "images": "http//",
                "quantity": 13,
                "unitPrice": 100,
                "amount": 1300
            }
]
}

the array from frontend is this来自前端的数组是这个

procurement_details:[
{
                "serialNo": 1,
                "item": "ac",
                "link": "http//",
                "images": "http//",
                "quantity": 1,
                "unitPrice": 100,
                "amount": 100
            },
            {
                "serialNo": 2,
                "item": "fan",
                "link": "http//",
                "images": "http//",
                "quantity": 1,
                "unitPrice": 100,
                "amount": 100
            }
]

output i want. output 我要。 Need to replace the matching serialNo objects in particular with the objects in particulars需要将匹配的 serialNo 对象替换为 particulars 中的对象

particulars:[
{
                "serialNo": 1,
                "item": "ac",
                "link": "http//",
                "images": "http//",
                "quantity": 1,
                "unitPrice": 100,
                "amount": 100
            },
            {
                "serialNo": 2,
                "item": "fan",
                "link": "http//",
                "images": "http//",
                "quantity": 1,
                "unitPrice": 100,
                "amount": 100
            },
            {
                "serialNo": 3,
                "item": "desk",
                "link": "http//",
                "images": "http//",
                "quantity": 13,
                "unitPrice": 100,
                "amount": 1300
            }
]

i need to replace the objects in particulars with the new objects from procurement_details with respect to the serialNo.so can anyone help me to figure this out and im using nodejs and mongoClient.我需要用 procurement_details 中关于 serialNo 的新对象替换细节中的对象。所以任何人都可以帮助我解决这个问题并使用 nodejs 和 mongoClient。

var bulk=await tickets.initializeOrderedBulkOp() var bulk=await tickets.initializeOrderedBulkOp()

   for(procurement_detail of procurement_details){
    const resultt=await tickets.find({"_id":mongodb.ObjectId(ticketId),"particulars.serialNo":procurement_detail.serialNo},{projection:{"particulars.$":1,_id:0}}).toArray()
    console.log("resultts",resultt);
    await bulk.find({"_id":mongodb.ObjectId(ticketId),"particulars.serialNo":procurement_detail.serialNo}).update({
     
            $set:{"particulars.$":procurement_detail},
            $push:{ticketHistory:{$each:resultt[0].particulars}}
            
        })

    }
   

await bulk.execute()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM