가 MongoDB를의 컬렉션이 전체 문서 반환MongoDB의 지리 공간 쿼리는 항상 다음과 같습니다
{
"_id" : "7613035010550",
"purchases" : [
{
"date" : ISODate("2017-04-15T14:15:00.000Z"),
"coords" : {
"lon" : 43.729604,
"lat" : 1.416017
},
"metar" : {},
"quantity" : 1,
"price" : 2.31
},
{
"date" : ISODate("2017-05-02T16:23:00.000Z"),
"coords" : {
"lon" : 43.722862,
"lat" : 1.415837
},
"metar" : {},
"quantity" : 6,
"price" : 12
},
{
"date" : ISODate("2017-05-02T18:32:00.000Z"),
"coords" : {
"lon" : 46.307353,
"lat" : 3.28937
},
"metar" : {},
"quantity" : 2,
"price" : 5
}
],
"rates" : [
{
"value" : 5
},
{
"value" : 4
},
{
"value" : 5
},
{
"value" : 2
}
]
}
을 그리고 (A 정의 반경 내에서 수행에만 구매를 반환 할 abble하는 쿼리를 만들 싶습니다 즉, 5km 정도)와 id 주위에만 ... 그러나 나는 이런 종류의 질의를 처리하는 방법을 모른다. 내 exemple에 정의 된 반경 주위에 만들어 구매의 배열 같은 것을 반환 abble로 내가 좋아하는 것 ... 즉, 만 두
db.getCollection('stats').find({"purchases.coords":{$geoWithin:{$centerSphere: [[43.688935, 1.401541], 25/6378.1]}}})
그러나 전체 문서를 반환
이 쿼리 :
{
"date" : ISODate("2017-04-15T14:15:00.000Z"),
"coords" : {
"lon" : 43.729604,
"lat" : 1.416017
},
"metar" : {},
"quantity" : 1,
"price" : 2.31
},
{
"date" : ISODate("2017-05-02T16:23:00.000Z"),
"coords" : {
"lon" : 43.722862,
"lat" : 1.415837
},
"metar" : {},
"quantity" : 6,
"price" : 12
}
어떻게 이러한 종류의 쿼리를 수행 할 수 있습니까? 또는 ... 내 컬렉션을 이러한 종류의 쿼리를 만들기 위해 어떻게 정의 할 수 있습니까?
들으, 나는 단계 project와 unwind와 집계를 사용하는 것이 좋습니다 것입니다 귀하의 목적
JL
Thx 많이 ... 저는 MongoDB와 총 신인입니다.이 솔루션은 정말 효율적입니다. 다음은 PHP 백엔드로이 쿼리를 만들어야합니다 ... lol –