У меня есть несколько магазинов с продуктами в моей базе данных MongoDB в соответствии с этой моделью данных: Магазин {idShop, имя, местоположение {lat, lon}, products [] of int} Если я запускаю следующую команду в консоли mongoDB по умолчанию:
db.shops.find ({products: 1, location: {$ near: [41.391204,2.145381]}}). Limit (300)
донайти магазины, у которых товар № 1 упорядочен по расстоянию. Я получаю следующие результаты:
{"_id": ObjectId ("4f410cefe4b03a0e3cff6f5a"), "name": "Shop1", "location":{"lat": 41.389915, "lon": 2.135628}, "products": [1, 5, 4]}
{"_id": ObjectId ("4f410cefe4b03a0e3cff6f59"), "name": "Shop2Center "," location ": {" lat ": 41.388191," lon ": 2.128816}," products ": [1, 2, 3]}
{" _id ": ObjectId (" 4f410cefe4b03a0e3cff6f5c "), "name": "Shop3", "location": {"lat": 41.384712, "lon": 2.172031}, "products": [6, 1]}
{"_id": ObjectId ("4f410cefe4b03a0e3cff6f5d"), "name": "Shop4", "location": {"lat": 41.384029, "lon": 2.173936}, "products": [6, 1, 2, 3, 4, 5]}
Теперь я хочу получить те же результаты, ноиспользуя мой Java сервлет.Если я ищу только по номеру продукта, результаты в порядке, но не отсортированы.Затем, если я пытаюсь отсортировать их, добавив новое условие ключ / значение, оно ничего не возвращает.Я использую следующий код:
BasicDBObject query = new BasicDBObject ();
query.put ("products", Integer.parseInt (idProduct));
QueryBuilder query2 = new QueryBuilder ();
query2.near (Double.parseDouble (lat), Double.parseDouble (lon));
query.putAll (query2.get ());
curShops = collShops.find (query);
Возвращает пустой JSON.Я также пробовал другие способы, такие как:
BasicDBObject query = new BasicDBObject ();
query.put ("products", Integer.parseInt (idProduct));
ArrayList ar = new ArrayList (2);
ar.add (Double.parseDouble (lat));
ar.add (Double.parseDouble (lon));
query.put ("location", новый BasicDBObject ("$ near", ar));
curShops = collShops.find (query);
безУдачи.
Кто-нибудь может мне помочь с этим?
Заранее спасибо.