Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mongodb 按非唯一字段排序和分页mongo_Mongodb_Sorting_Pagination - Fatal编程技术网

Mongodb 按非唯一字段排序和分页mongo

Mongodb 按非唯一字段排序和分页mongo,mongodb,sorting,pagination,Mongodb,Sorting,Pagination,如果我想按产品价格排序,当我应用skip and limit时,如果价格不同,它会起作用,但如果价格都相同,分页会打断下一页的结果,这不是预期的结果,它会显示已经显示的结果,好像每次对产品进行排序的计算都不同。所以我想知道是不是要添加产品_id,它是sort唯一的:{product_price:1,product_id:1}正确,以确保我的分页不会中断,这样每次排序的顺序都是一样的。还有什么我应该知道的吗? 谢谢这应该行得通。你试过了吗?我试过重现你的问题,但我做不到。该查询在shell上是否存

如果我想按产品价格排序,当我应用skip and limit时,如果价格不同,它会起作用,但如果价格都相同,分页会打断下一页的结果,这不是预期的结果,它会显示已经显示的结果,好像每次对产品进行排序的计算都不同。所以我想知道是不是要添加产品_id,它是sort唯一的:{product_price:1,product_id:1}正确,以确保我的分页不会中断,这样每次排序的顺序都是一样的。还有什么我应该知道的吗?
谢谢

这应该行得通。你试过了吗?我试过重现你的问题,但我做不到。该查询在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。