确保在MongoDB中使用$ skip和$ limit时的顺序

时间:2018-02-14 14:30:11

标签: mongodb aggregation-framework

我的收藏中有这样的数据:

...
{ name: 'ad1cvbc', price: 300 },
{ name: 'tbcvbc3', price: 500 },
{ name: 'yjc5vbc', price: 500 },
{ name: 'at7vvbc', price: 500 },
{ name: 'a86v5bc', price: 500 },
{ name: 'a23dvbc', price: 500 },
{ name: 'adth4bc', price: 500 },
{ name: 'e34bc', price: 700 },
...

我有这样的汇总:

[
    { $match: { ... } },
    { $sort: { price: -1 } },
    { $skip: x },
    { $limit: 20 }
]

x每次增加20,我想要更多数据,但问题是,因为我有多个price具有相同的值(我有超过20个),有时我得到相同的document。我保证订单是一样的,当我有很多行,并且具有相同值的排序字段时,我不会得到重复。

编辑:所以如果我想每次获得3项,我可能会得到以下结果:

第一次通话结果:

{ name: 'ad1cvbc', price: 300 },
{ name: 'tbcvbc3', price: 500 },
{ name: 'yjc5vbc', price: 500 }  // <- this

第2个通话结果:

{ name: 'a23dvbc', price: 500 },
{ name: 'yjc5vbc', price: 500 }, // <- this
{ name: 'at7vvbc', price: 500 }

重复了1个文档,因为当文档具有相同的排序字段值时,MongoDB每次都不会按顺序获取项目。

1 个答案:

答案 0 :(得分:1)

这样的东西
md-switch .md-bar{
   width:70px;
}

md-switch.md-checked .md-thumb{
  left:40px;
}