2013-02-18 2 views
0

Я столкнулся с некоторыми проблемами при использовании команды geoNear от mongodb с дополнительным запросом для фильтрации результатов. Следующие запросы сделаны с rockmongo.Команда mongodb geoNear с фильтром

В моей коллекции «poi» документы имеют «профили», которые представляют собой массив, содержащий объекты. При их поиске:

{ 
    geoNear : "poi", 
    near : [19,47], 
    query : {profiles : ObjectId("511f360901c610e813000004")} 
} 

Я не получаю результата.

Response from server: { "ns": "local.poi", "near": "1100010010100011101101101111001010100011101101101111", "results": [ 
     ], "stats": { 
    "time": NumberInt(2), 
    "btreelocs": NumberInt(0), 
    "nscanned": NumberInt(510), 
    "objectsLoaded": NumberInt(510), 
    "avgDistance": 0, 
    "maxDistance": 0 }, "ok": 1 } 

Однако без запроса, или даже с простыми {профилями: ObjectId ("511f360901c610e813000004")} запрос я получить ожидаемые результаты.

Другой вопрос, когда у меня есть примерно половина документов с «именем», «х», а другая половина с «у», запроса

{ 
    geoNear : "poi", 
    near : [47,19.5], 
    query : {"$and" : [{name : { "$in" : [/.*y.*/i]}}]} 
} 

не дает никаких результатов, когда простой {» $ и ": [{name: {" $ in ": [/. г./i]}}]}. Этот примерный запрос на самом деле может быть очень простым, хотя нет никаких различий в отношении результатов, и это больше похоже на мои фактические запросы в проекте.

Когда я пытаюсь использовать это с PHP, я получаю результаты независимо от передаваемого дополнительного запроса, поэтому каждый документ сортируется по расстоянию.

Пожалуйста, помогите мне узнать, не ошибаюсь ли я.

+0

Конечно, другие фильтровальные запросы, такие как {name: "x"} работают отлично, я борюсь с этими «более сложными». – azyoot

ответ

0

Хорошо, проблема была связана с драйвером PHP. Я обнаружил, что он работает в оболочке mongo, поэтому я переключился на 1.3.1, и теперь он работает!

+0

Вряд ли драйвер PHP был виноват здесь. Специальной обработки для аргументов и результатов [MongoDB :: command()] (http://php.net/manual/en/mongodb.command.php) нет. – jmikola

Смежные вопросы