Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 清除每个文档中对象数组中列表字段中的重复项_Arrays_Database_Mongodb_Mongodb Query_Nosql - Fatal编程技术网

Arrays 清除每个文档中对象数组中列表字段中的重复项

Arrays 清除每个文档中对象数组中列表字段中的重复项,arrays,database,mongodb,mongodb-query,nosql,Arrays,Database,Mongodb,Mongodb Query,Nosql,我在每个嵌套的子文档中都有myList。我需要清除每个文档中myList中的重复项。有什么疑问可以做到这一点吗 在输出中,myList中的值应为并集 这是预期的输出。请注意,myList不再包含重复项 { "_id" : "1235", "details" : [ { "productId" : "PRODUCT1"

我在每个嵌套的子文档中都有myList。我需要清除每个文档中myList中的重复项。有什么疑问可以做到这一点吗

在输出中,myList中的值应为并集

这是预期的输出。请注意,myList不再包含重复项

{ 
    "_id" : "1235", 
    "details" : [
        {           
            "productId" : "PRODUCT1",           
            "myList" : [
                "0001", 
                "0001", 
                "0002", 
                "0002", 
                
            ]
         },
         {           
            "productId" : "PRODUCT2",            
            "myList" : [
                "0002", 
                "0002", 
                "1234", 
                "1234", 
                
            ]
         }
    ]
}

尝试将列表转换为一个集合。Set将消除重复项。然后将集合转换回列表。

尝试将列表转换为集合。Set将消除重复项。然后将集合转换回列表。

您需要替换现有的数组,并可以使用来消除重复的条目:

{
  "_id" : "1235", 
  "details" : [
       {       
          "productId" : "PRODUCT1",           
          "myList" : [       
              "0001", 
              "0002", 
          ]
       },
       {  
          "productId" : "PRODUCT2",            
          "myList" : [
              "0002",      
              "1234", 
          ]
       }
  ]
}

您需要替换现有数组,并且可以使用来消除重复的条目:

{
  "_id" : "1235", 
  "details" : [
       {       
          "productId" : "PRODUCT1",           
          "myList" : [       
              "0001", 
              "0002", 
          ]
       },
       {  
          "productId" : "PRODUCT2",            
          "myList" : [
              "0002",      
              "1234", 
          ]
       }
  ]
}

在数组
详细信息中使用
$setUnion
。myList

  • $unwind
    详细信息,因为它的数组
  • $group
    by _id用于分组单独的详细信息文档和
    $setUnion
    ,并将其再次推送到详细信息

工作场所:

在数组
详细信息中使用
$setUnion
。myList

  • $unwind
    详细信息,因为它的数组
  • $group
    by _id用于分组单独的详细信息文档和
    $setUnion
    ,并将其再次推送到详细信息

工作场所:

你能展示一下预期的结果吗?更新了详细信息@米克尔:你能告诉我预期的结果吗?更新了细节@micklThis成功了-谢谢。如何使用此聚合更新集合?@balkotdude try
$out
:此操作有效-谢谢。如何使用此聚合更新集合?@balkotdude try
$out
db.collection.aggregate([
  {
    $unwind: "$details"
  },
  {
    $group: {
      _id: "$_id",
      details: {
        $push: {
          productId: "$details.productId",
          myList: {
            $setUnion: "$details.myList"
          }
        }
      }
    }
  }
])