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