Я столкнулся с некоторыми проблемами при использовании команды 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, я получаю результаты независимо от передаваемого дополнительного запроса, поэтому каждый документ сортируется по расстоянию.
Пожалуйста, помогите мне узнать, не ошибаюсь ли я.
Конечно, другие фильтровальные запросы, такие как {name: "x"} работают отлично, я борюсь с этими «более сложными». – azyoot