我的问题与[这里][1]相同。我已经创建了一个索引“2dsphere”,但从spring Java获取数据时,它告诉我在该特定列上创建一个索引,以触发对该列的地理空间查询。您能告诉我如何从spring Java获取地理空间索引吗?
这是我在mongoDB中的收藏结构:
{
"_id" : ObjectId("5729f6f0daf5583ade68b277"),
"type" : "Feature",
"geometry" : {
"type" : "Polygon",
"coordinates" : [
[
[
-61.392147064209,
12.5836229324341
],
[
-61.3972930908203,
12.5838899612427
],
[
-61.401252746582,
12.5869073867798
],
[
-61.3977165222168,
12.5903301239014
],
[
-61.3904685974121,
12.5893573760986
],
[
-61.388843536377,
12.587965965271
],
[
-61.3890991210938,
12.5845184326172
],
[
-61.392147064209,
12.5836229324341
]
]
]
},
"properties" : {
"TZID" : "America/St_Vincent"
}
}
以及要创建索引查询的查询:
db.timezone.createIndex({"geometry":"2dsphere"})
@Repository
public class MongoDaoImpl extends BaseMongoDaoImpl implements MongoDao{
public static final Logger logger=LoggerFactory.getLogger(MongoDaoImpl.class);
@Autowired
MongoTemplate mongoTemplate;
@Override
public String getTimezoneIdFromLatLong(Double lat, Double longi){
String TZId=null;
try{
Query query = new Query(new Criteria()
.and("geometry")
.near(new Point(lat, longi)).maxDistance(0)).limit(1);
query.fields().include("properties.TZID").exclude("_id");
logger.info("Mongo query : " + query.toString());
TZId = mongoTemplate.find(query, String.class,"timezone").get(0);
logger.info("Getting the TimezoneId of Lat and long : "+ TZId);
}catch(Exception e){
logger.error("Exception occured while getting TimezoneId from lat & long", e);
}
return TZId;
}
}
所以,我试图运行上面的代码,然后它在控制台给我下面的错误。
2016-06-03 12:15:52185[http-nio-8321-exec-3:a7827b0e-eb2e-4485-a385-e6a8a1dd765d]信息::,-Mongo查询:查询:{“geometry”:{“$near”:{$java:Point[x=-61.338249,y=12.691054]},“$maxDistance”:0.0},字段:{“properties.TZID”:1,“\u id”:0},排序:null
524e89638c4d]错误::,-从lat获取TimezoneId时发生异常
经过这么多挣扎,我找到了不使用标准的答案。下面这个是使用不使用Spring...也就是说只有java这绝对会帮助你
MongoClient mongoClient = new MongoClient("localhost" , 27017 );
DB db = mongoClient.getDB("services");
DBCollection collection= db.getCollection("timezone");
BasicDBObject point = new BasicDBObject("type", "Point");
double[] ptCordinate={lat,longi};
point.put("coordinates", ptCordinate);
BasicDBObject query = new BasicDBObject(
"geometry", new BasicDBObject(
"$near", new BasicDBObject(
"$geometry", point
)
)
);
collection.findOne(query);
我有一个名为search2的集合,里面有大约20000个这样的文档: 集合上只有这个索引和“_id”字段上的默认索引。 当我执行以下查询时,我希望“nscannedObjects”为=10: 但结果是这样的: 提前致谢
我正在使用MongoDB 2.6标准。我已经成功地创建了多个集合,插入数据,查询数据等。在Mongo shell内部工作良好,以及从使用MongoSkin的NodeJS应用程序。到目前为止,一切都很好。现在我需要使用第三方工具(D2RQ)来访问数据。似乎D2RQ使用_schema集合来获取集合名称,列名,数据类型等。D2RQ适用于其中三个集合,因为集合在MongoDB中_schema。第四个集合不
我有用于数据库的Spring Boot App和MongoDB。 在数据库中,我有一个集合packageholiday,其中有一些元素,这是JSON: 我的目标是什么: 正如你们所见,我在集合中有这样的数组: 所以我的问题实际上是创建API,它将从集合中返回具有指定的元素。 例如 的API 例如,对于相同的 的API 我怎样才能做到这一点?这样可能吗?
我正在尝试在MongoDb中插入数据并在ES上查看 mongo db中的数据在db:testmongo collection:person中 现在,当我做的时候 我得到了 但在浏览器上键入时 谢谢
问题内容: 我有一个QuerySet,让我们称之为,它是由与该问题无关的某些属性排序的。然后有一个对象,我们称它为。现在,我想尽可能 高效 地知道in中的索引。我知道我可以在Python中使用它,也可以通过将每个对象与进行比较来循环,但是执行此操作的最佳方法是什么?我正在寻找高性能,这是我唯一的标准。 __ 在Windows上将Python 2.6.2与Django 1.0.2结合使用。 问题答案
我有一个名为product的MongoDB集合,其中包含以下文档,如下所示。 我想查询收款情况,只退回价格最低的单据,例如: 但当我运行聚合查询时: 它只返回一个文档。