我有收集宠物,我在那里存放有该位置的动物,我有索引
{
"Cache.Location" : "2dsphere"
}
因此,当我运行查询时,我希望获得最近距离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
}
}
}
所以我做错了什么?
答案 0 :(得分:0)
花了4个多小时后,我上床睡觉,就在早上,我得到了什么错误。
如果你注意位置,你会看到
"Location" : {
"lat" : 49.83968353271484, "lng" : 24.02971649169922
}
Latitude是第一个,但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。 Mongo太酷了:))