MongoDB分页 - 重复结果

时间:2017-08-01 12:57:22

标签: mongodb go

所以我有以下文件:

{
    _id:596fc7d71aa95179315b27ea
    check:1
    pro:1
    slug:"ediloc.com marinescu"
}

{
    _id:596fd4661aa9517c7709475e
    check:0
    pro:1
    slug:"ediloc.com2"
}

{
    _id:5971ea3d1aa9515dcfee30ed
    check:0
    pro:0
    slug:"asirom"
}

{
    _id:5971f8871aa9516112e2e997
    slug:"aesirom2"
    check:0
    pro:0
}

{
    _id:597b9d741aa951452b8e6028
    user_id:596fc73b1aa9517908b8a2f9
    slug:"bridgeway"
    check:0
    pro:0
}

{
    _id:597bb6d11aa951452b8e6029
    slug:"rca"
    check:1
    pro:0
}

{
    _id:597bce141aa9515587b821ad
    slug:"anabella"
    check:0
    pro:0
}

{
    _id:597bceaa1aa9515587b821ae
    slug:"diana"
    check:0
    pro:0
}

{
    _id:597bcee31aa9515587b821af
    slug:"ananas"
    check:0
    pro:0
}

{
    _id:597bd2a31aa95156f22e24f6
    slug:"plaza mall"
    check:0
    pro:0
}

{
    _id:597c63161aa95171192c54fd
    slug:"ediloc.com23423fg"
    check:1
    pro:0
}

这是我在GO语言中的MongoDB查询,我正在检索包含字符串“a”的所有文档,并按PRO和CHECK字段对它们进行排序:

var business []bson.M

oe := bson.M{
    "$match": bson.M{"slug": bson.M{"$regex": "a"}},
}
oa := bson.M{
    "$project": bson.M {"pro": 1, "check": 1, "slug":1},
}
ol := bson.M{
    "$limit" :3,
}
os := bson.M{
    "$skip" :skips, //this is 0,3,6,9 etc depending on the page number
}
or := bson.M{
   "$sort": bson.D{
        bson.DocElem{Name: "pro", Value: -1},
        bson.DocElem{Name: "check", Value: -1},
        bson.DocElem{Name: "slug", Value: 1},
 },
}


pipe := c.Pipe([]bson.M{oe, or, oa, os, ol })
if err := pipe.All(&business); err != nil { 
    log.Printf(err.Error())
}

现在这些是我为每个页面找回的结果。

第1页:

{
    _id:596fc7d71aa95179315b27ea
    check:1
    pro:1
    slug:"ediloc.com marinescu"
}

{
    _id:597bb6d11aa951452b8e6029
    slug:"rca"
    check:1
    pro:0
}

{
    _id:5971ea3d1aa9515dcfee30ed
    check:0
    pro:0
    slug:"asirom"
}

第2页:

{
    _id:597b9d741aa951452b8e6028
    user_id:596fc73b1aa9517908b8a2f9
    slug:"bridgeway"
    check:0
    pro:0
}

{
    _id:5971f8871aa9516112e2e997
    name:"aesirom2"
    check:0
    pro:0
}

{
    _id:597bce141aa9515587b821ad
    slug:"anabella"
    check:0
    pro:0
}

第3页:

{
    _id:597bce141aa9515587b821ad
    slug:"anabella"
    check:0
    pro:0
}

{
    _id:5971f8871aa9516112e2e997
    name:"aesirom2"
    check:0
    pro:0
}

{
    _id:597bceaa1aa9515587b821ae
    slug:"diana"
    check:0
    pro:0
}

正如您所看到的,第三页第二页上有重复的结果。

我是否可以编写此查询,以便在您转到其他页面时不会检索重复的文档?

0 个答案:

没有答案