gpt4 book ai didi

mongodb - 使用 MongoDB 进行正确的索引和排序

转载 作者:可可西里 更新时间:2023-11-01 10:44:48 25 4
gpt4 key购买 nike

我正在运行一个相对复杂的查询。我在下面包含了它,但本质上我有一个位置查询结合了一个 $or 和 $in 查询,所有查询都按日期/时间排序。每当我运行完整查询时,它都会按升序而不是降序返回。

如果我取出查询的位置部分,它会以正确的顺序成功返回结果,但是一旦我将查询的位置部分放回去,它就会继续失败。

这是用 php 编写的查询:

$query = array( 
'$or' => array(
array( ISPUBLIC => true ),
array( GROUP_INVITES.".".TO.".".INVITE_VAL => array( '$in' => $user_groups ) )
),
LOC => array( '$near' => array( (float)$lon , (float)$lat ), '$maxDistance' => 1 ) //Using 1 degree for the max distance for now
);

$res = $this->db->find( $query )->sort(array('ts'=>-1))->limit($limit)->skip($start);

使用的字段是映射到数据库中字段的常量。我的第一个假设是索引配置不正确,但是在将地理空​​间查询与其他查询结合使用时,我应该如何对其进行索引?

更新

我已经能够通过将查询简化为以下内容来重现该问题:

$query = array( 
HOLLER_GROUP_INVITES.".".HOLLER_TO.".".INVITE_VAL => array( '$in' => $user_groups ),
HOLLER_LOC => array( '$near' => array( (float)$lon , (float)$lat ), '$maxDistance' => 1 )
);

更新 2

我已经运行了额外的测试,似乎当限制被移除时,它的排序方向是正确的。不知道这里发生了什么。

最佳答案

这个问题似乎有答案:Sorting MongoDB GeoNear results by something other than distance? ....显然 $near 已经在进行某种排序。如果您只是想限制在给定边界内但按其他内容排序,则应使用 $within 而不是 $near。

关于mongodb - 使用 MongoDB 进行正确的索引和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7718926/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com