Pymongo删除mongodb中的条件重复

时间:2016-06-20 08:51:12

标签: python mongodb aggregation-framework

感谢您阅读我的问题。

请执行任何错误,我正努力提高英语水平。

我有>我 MongoDB 中的4000 记录,这是我的记录之一:

{
    "_id" : ObjectId("5763821ffefb61074041477e"),
    "sessionId" : "5138A3B4A5966CE4B2203B8BFC90055F",
    "objects" : [ 
        {
            "id" : "334449673730",
            "point" : 0.5
        }, 
        {
            "id" : "790373008255",
            "point" : 0.5
        }, 
        {
            "id" : "790373008255",
            "point" : 1.0
        }, 
        {
            "id" : "572453522243",
            "point" : 0.5
        }, 
        {
            "id" : "572453522243",
            "point" : 1.0
        }
    ]
}

我的结果,我想删除重复的id,但保留point:1.0

结果:

{
    "_id" : ObjectId("5763821ffefb61074041477e"),
    "sessionId" : "5138A3B4A5966CE4B2203B8BFC90055F",
    "objects" : [ 
        {
            "id" : "334449673730",
            "point" : 0.5
        }, 
        {
            "id" : "790373008255",
            "point" : 1.0
        }, 
        {
            "id" : "572453522243",
            "point" : 1.0
        }
    ]
}

我关注此帖:How to remove duplicates with a certain condition in mongodb? 它与我的问题相似,但我不知道为什么结果不是我想要的:

pipeline = ([
    {
        "$group": {
            "_id": "$id",
            "count": { "$sum": 1 },
            #"uniqueIds": { "$addToSet": "$_id" },
            "Point": { "$max": "$point" }
        }
    },
    {
        "$match": {
            "count": { "$gte": 1 }
        }
    }
])

for test_item in collection_forTest.aggregate(pipeline):
    print(test_item)

结果:

  

{'Point':无,'count':1,'_ id':无}

我可以使用python代码,加载所有记录,检查列表中相同的id,比较point = 1是否与point != 1删除相同的记录,但我认为它比慢聚合

你能帮我解决所有问题> 4000条记录? 非常感谢!

0 个答案:

没有答案