在mongodb中查找重复的数组

时间:2019-06-24 12:02:52

标签: mongodb geometry aggregation-framework gis

我在mongodb COLL中具有LineString几何形状,但是有时会交换这些几何形状。我也想找到这些。我有一个解决方案,当它们具有完全相同的几何形状时,可以在集合中查找重复的文档(请参见下面的代码),但我也想查找类似的情况:

"geometry.coordinates" : [ [13.1, 50.1], [13.2, 50.2] ]
"geometry.coordinates" : [ [13.2, 50.2], [13.1, 50.1] ]

//This is my actual code
db.COLL.aggregate([
    { $match: {}},
    { $group: {
        _id: { geometry: "$geometry"}, 
        dups: { "$addToSet": "$_id" },
        count: { "$sum": 1 }
    }},
    { $match: {
        count: { "$gt": 1 }
    }}
],
    {allowDiskUse: true} 
)

如果您知道在mongodb中是不可能的,请解释为什么不可以。

1 个答案:

答案 0 :(得分:0)

最后,我解决了将数组解析为集合的问题:

db.COLL.aggregate([
    { $match: {}},
    { $group: {
        _id: { 
            geometry: { 
                $setUnion: ["$geometry.coordinates"] 
            }
        }, 
        dups: { "$addToSet": "$_id" },
        count: { "$sum": 1 }
    }},
    { $match: {
        count: { "$gt": 1 }
    }}
],
    {allowDiskUse: true} 
)