我有收藏宠物,我把动物存放在这个收藏上,我有索引。
{
"Cache.Location" : "2dsphere"
}因此,当我运行查询时,我希望得到的元素在我的城市lviv附近的最大距离为100公里。
db.Pet.find({ "Cache.Location" : { "$nearSphere" : { "$geometry" : { "type" : "Point", "coordinates" : [24.029717000000005, 49.839683] } }, "$maxDistance" : 100000.0 } })但它会带来奇怪的结果,就像来自俄罗斯和以色列的宠物一样。
但是我有很多宠物在我的位置,这些宠物应该归还。
{
"_id" : 336,
"PetTypeId" : 1,
"UserId" : 373,
"PetBreedId" : 127,
"Adverts" : [],
"Name" : "Каспер",
"Birthdate" : ISODate("2009-04-06T21:00:00.000Z"),
"CreatedAt" : ISODate("2011-07-27T18:32:25.000Z"),
"MainImageFileId" : 1361,
"Description" : "",
"Sex" : 1,
"Cache" : {
"MainImage" : "http://img.thebestofpets.com/%size%/1/1361.jpg",
"Location" : {
"lat" : 49.83968353271484, "lng" : 24.02971649169922
}
}
}那我做错什么了?
发布于 2013-09-29 10:57:36
花了4个多小时后,我上床睡觉,就在早上,我发现了问题所在。
如果你注意位置,你会看到
"Location" : {
"lat" : 49.83968353271484, "lng" : 24.02971649169922
}纬度第一,但在mongodb文档中的任何地方,它都说它应该是第二个字段。
所以我把我的实体修复成
使用MongoDB.Bson.Serialization.Attributes;
namespace Pets.Domain.Entity
{
public class Location
{
public Location()
{
}
public Location(double lat, double lon)
{
Latitude = lat;
Langtitude = lon;
}
[BsonElement("lat", Order = 2)]
public double Latitude { get; set; }
[BsonElement("lng", Order = 1)]
public double Langtitude { get; set; }
}
}现在它起着期望的作用
PS。蒙古太酷了:)
https://stackoverflow.com/questions/19077235
复制相似问题