mongo sort after limit after sort - Not working

后端 未结 5 1854
余生分开走
余生分开走 2020-12-18 02:15

I have a collection, from which i get particular type of users using $query
Then I need sort them according to user_id ascending and limit them to 2000

From t

5条回答
  •  长情又很酷
    2020-12-18 02:39

    Your cannot do a sort and then a limit and then a sort. The Cursor object is exactly that and it will not run the query until you iterate to the first result via getNext() which is either run manually or within a foreach loop not only that but sort is just a property of the object as such making two sorts just overwrites the property.

    The best way to achieve what your looking for is:

    $doc = $collection->find($query)->sort(array('user_id' => 1))
           ->skip(1999)->limit(1)->getNext();
    

    That will always pick the highest user_id (which occurs at the end in this sort) of the group, which will give off the same results as doing two sorts.

提交回复
热议问题