删除嵌套组中的重复项

我必须删除与JSON嵌套数组和对象中的父元素具有相同 LocateId 的元素(我正在使用MongoDB):

{
 "mainLocation": {
                  "locateId": {"$numberInt": "111111"},"LocateName": "Indonesia","subLocation": [{
                                "locateId": {"$numberLong": "2222222222"},*//this the refference for Child location*
                                "LocateName": "Jakarta Pusat","childLocation": [{
                                                   "locateId": {"$numberLong": "2222222222"},*//if the LocateId is same with Sublocation.LocateId will removed*
                                                   "LocateName": "Jakarta Pusat",},{
                                                   "locateId": {"$numberLong": "3333333333"},"LocateName": "Jakarta Barat",}]
                                 },{
                                "locateId": {"$numberLong": "1234123412"},"LocateName": "Bandung","childLocation": []
                                 }]
                 }
}

以及我期望的是:

{
 "mainLocation": {
                  "locateId": {"$numberInt": "111111"},"LocateName": "Jakarta Pusat","childLocation": [{
                                                   "locateId": {"$numberLong": "3333333333"},}] *//the element with same Id has been removed*
                                 },"childLocation": []
                                 }]
                 }
}

我尝试了简单的功能,至少可以按我期望的顺序显示

db.pages.aggregate(
    [{ 
            "$group" : {
                LocatediId: "$mainLocation.LocatediId",subLocation : {
                        "$group" : { 
                        LocatediId: "$mainLocation.subLocation.LocatediId",Locatedname: "$mainLocation.subLocation.Locatedname"
                        }}
        }}
    ]);

所以我可以将结果导出到JSON文件。

heshaojiang123456 回答:删除嵌套组中的重复项

尝试这个:

db.collection.aggregate([
   {
      $set: {
         "mainLocation.subLocation": {
            $map: {
               input: "$mainLocation.subLocation",as: "subLocation",in: {
                  $mergeObjects: [
                     "$$subLocation",{
                        childLocation: {
                           $filter: {
                              input: "$$subLocation.childLocation",cond: { $ne: ["$$this.locateId","$$subLocation.locateId"] }
                           }
                        }
                     }
                  ]
               }
            }
         }
      }
   }
])

Mongo playground

本文链接:https://www.f2er.com/2647859.html

大家都在问