預期

2013-09-29 64 views
0

我有收集寵物在那裏我與位置存儲在該集合我有指數預期

{ 
    "Cache.Location" : "2dsphere" 
} 

所以,當我運行查詢我期望能獲得它們靠近我的城市利沃夫元素動物$ nearSphere dosnot工作最大距離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

花了超過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。 Mongo太酷了:)