Arrays 清除每个文档中对象数组中列表字段中的重复项
我在每个嵌套的子文档中都有myList。我需要清除每个文档中myList中的重复项。有什么疑问可以做到这一点吗 在输出中,myList中的值应为并集 这是预期的输出。请注意,myList不再包含重复项Arrays 清除每个文档中对象数组中列表字段中的重复项,arrays,database,mongodb,mongodb-query,nosql,Arrays,Database,Mongodb,Mongodb Query,Nosql,我在每个嵌套的子文档中都有myList。我需要清除每个文档中myList中的重复项。有什么疑问可以做到这一点吗 在输出中,myList中的值应为并集 这是预期的输出。请注意,myList不再包含重复项 { "_id" : "1235", "details" : [ { "productId" : "PRODUCT1"
{
"_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
by _id用于分组单独的详细信息文档和$group
,并将其再次推送到详细信息$setUnion
工作场所:在数组
详细信息中使用$setUnion
。myList
详细信息,因为它的数组$unwind
by _id用于分组单独的详细信息文档和$group
,并将其再次推送到详细信息$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"
}
}
}
}
}
])