Mongodb 按非唯一字段排序和分页mongo
如果我想按产品价格排序,当我应用skip and limit时,如果价格不同,它会起作用,但如果价格都相同,分页会打断下一页的结果,这不是预期的结果,它会显示已经显示的结果,好像每次对产品进行排序的计算都不同。所以我想知道是不是要添加产品_id,它是sort唯一的:{product_price:1,product_id:1}正确,以确保我的分页不会中断,这样每次排序的顺序都是一样的。还有什么我应该知道的吗?Mongodb 按非唯一字段排序和分页mongo,mongodb,sorting,pagination,Mongodb,Sorting,Pagination,如果我想按产品价格排序,当我应用skip and limit时,如果价格不同,它会起作用,但如果价格都相同,分页会打断下一页的结果,这不是预期的结果,它会显示已经显示的结果,好像每次对产品进行排序的计算都不同。所以我想知道是不是要添加产品_id,它是sort唯一的:{product_price:1,product_id:1}正确,以确保我的分页不会中断,这样每次排序的顺序都是一样的。还有什么我应该知道的吗? 谢谢这应该行得通。你试过了吗?我试过重现你的问题,但我做不到。该查询在shell上是否存
谢谢这应该行得通。你试过了吗?我试过重现你的问题,但我做不到。该查询在shell上是否存在相同的问题?@JM.D似乎正在运行,但我问是否我不知道有什么问题。@MarkusWMahlberg是的。我的价格都是0,第一个请求:排序:{price:1},跳过:0,限制:2,第二个请求:排序{price:1},跳过:2,限制:2。我一共有4个产品,它认为这是由于mongo优化程序。如果所有产品的价格都相同,它不会每次都按相同的顺序排序。我忘了提到我使用的是聚合框架。从技术上讲,结果并没有错,因为所有产品在技术上共享相同的价格0。因此,排序的结果是不确定的。如果您为价格设置了实际值,那么聚合将按预期工作。即使价格为0,也可以简单地将_id添加到$sort步骤中。注意:您的聚合可以表示为查询:db.product.find.sort{price:1}.skipx.limity。