Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.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 集合mongodb中的拆分数组_Arrays_Mongodb_Aggregation Framework - Fatal编程技术网

Arrays 集合mongodb中的拆分数组

Arrays 集合mongodb中的拆分数组,arrays,mongodb,aggregation-framework,Arrays,Mongodb,Aggregation Framework,我一直在尝试创建一组字符串,但我的主要问题是,由于其他数据的原因,我无法使用$unwind。 为了更清楚,我将展示一个示例: 以下是我的部分文档的外观: { "key": [ "a", "b", "c" ] }, { "key": [ "b", "d" ]

我一直在尝试创建一组字符串<或数组>,但我的主要问题是,由于其他数据的原因,我无法使用$unwind。 为了更清楚,我将展示一个示例:

以下是我的部分文档的外观:

{
    "key": [
      "a",
      "b",
      "c"
    ]
  },
  {
    "key": [
      "b",
      "d"
    ]
  },
  {
    "key": [
      "e"
    ]
  }
我想得到这样一个数组:

{
  "keys": [
     "a", 
     "b",
     "c",
     "d",
     "e"
  ]
}
  {
    "$group": {
      "_id": null,
      "keys": {
        "$addToSet": {
          "$cond": {
            if: {
              "$gt": [
                {"$size": "$key"},
                1
              ]
            },
            then: "<SPLIT THE ARRAY IN THE AMOUNT OF ELEMENTS>",
            else: "$key"
          }
        }
      }
    }
  }
或者这个:

{
  "keys": [
     ["a"], 
     ["b"],
     ["c"],
     ["d"],
     ["e"]
  ]
}
我只需要在那里有独特的价值观

如果我可以使用$unwind,然后使用$addToSet,那就太容易了。但正如我之前所说,我不能,因为我需要其他数据。 我试图在$addToSet中使用$cond,但我不知道如何遍历数组

此管道不工作->

db.collection.aggregate([
  {
    "$group": {
      "_id": null,
      "keys": {
        "$addToSet": {
          "$concatArrays": [
            "$key",
            "$this"
          ]
        }
      },
      
    }
  }
])
也许是这样的:

{
  "keys": [
     "a", 
     "b",
     "c",
     "d",
     "e"
  ]
}
  {
    "$group": {
      "_id": null,
      "keys": {
        "$addToSet": {
          "$cond": {
            if: {
              "$gt": [
                {"$size": "$key"},
                1
              ]
            },
            then: "<SPLIT THE ARRAY IN THE AMOUNT OF ELEMENTS>",
            else: "$key"
          }
        }
      }
    }
  }
以下是我的代码片段: 有人能给我引路吗!非常感谢。

因此,我们的想法是使用从数组中选择唯一值:

请尝试以下查询:

db.collection.aggregate([
{
$group:{
_id:null,
“键”:{$push:$key”}
}
},
{
$addFields:{
“钥匙”:{
美元减少:{
输入:“$keys”,
初始值:[],
在:{
$setUnion:[“$$value”、“$$this”]
}
}
}
}
}
])
输出:

{
“_id”:空,
“钥匙”:[
“a”,
“b”,
“c”,
“d”,
“e”
]
}
集合中的测试数据

[
{
“关键”:[
“a”,
“b”,
“c”
]
},
{
“关键”:[
“b”,
“d”,
“a”,
]
},
{
“关键”:[
“e”,
“b”
]
}
]

哇,谢谢你,成功了!