首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >$nearSphere不像预期的那样工作

$nearSphere不像预期的那样工作
EN

Stack Overflow用户
提问于 2013-09-29 10:57:36
回答 1查看 228关注 0票数 0

我有收藏宠物,我把动物存放在这个收藏上,我有索引。

代码语言:javascript
复制
{
    "Cache.Location" : "2dsphere"
}

因此,当我运行查询时,我希望得到的元素在我的城市lviv附近的最大距离为100公里。

代码语言:javascript
复制
db.Pet.find({ "Cache.Location" : { "$nearSphere" : { "$geometry" : { "type" : "Point", "coordinates" : [24.029717000000005, 49.839683] } }, "$maxDistance" : 100000.0 } })

但它会带来奇怪的结果,就像来自俄罗斯和以色列的宠物一样。

但是我有很多宠物在我的位置,这些宠物应该归还。

代码语言:javascript
复制
{
    "_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
        }
    }
}

那我做错什么了?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-09-29 10:57:36

花了4个多小时后,我上床睡觉,就在早上,我发现了问题所在。

如果你注意位置,你会看到

代码语言:javascript
复制
"Location" : {

            "lat" : 49.83968353271484, "lng" : 24.02971649169922
        }

纬度第一,但在mongodb文档中的任何地方,它都说它应该是第二个字段。

所以我把我的实体修复成

使用MongoDB.Bson.Serialization.Attributes;

代码语言:javascript
复制
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。蒙古太酷了:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19077235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档