所以我有以下文件:
{
_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
}
正如您所看到的,第三页第二页上有重复的结果。
我是否可以编写此查询,以便在您转到其他页面时不会检索重复的文档?