MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

$dosłowne użycie w Golang-mgo

Aby zakończyć, oto, co faktycznie próbujesz zrobić:

pipe := DB.C("store").Pipe([]bson.M{
    {"$project": bson.M{"location": bson.M{"type": bson.M{"$literal": "Point"}, "coordinates": []interface{}{"$longitude", "$latitude"}}}},
    {"$match": bson.M{"location": bson.M{"$geoWithin": bson.M{"$centerSphere": []interface{}{"$coordinates", 10 / 6378.11}}}}},
})

Problem nie dotyczy Twojego "punktu" dosłownie, to tylko zbieg okoliczności. Jeśli zmienisz go na "Pt" na przykład nadal będziesz widzieć dokładnie ten sam komunikat o błędzie.

Punkt w komunikacie o błędzie odnosi się do $centerSphere , który oczekuje środka punktu i promień. A sposób, w jaki próbujesz „przejść”, nie działa.

Działa to na przykład:

"$centerSphere": []interface{}{[]interface{}{1.0, 2.0}, 10 / 6378.11}

Twoje oryginalne zapytanie nie ma sensu, ponieważ próbujesz znaleźć dokumenty, których lokalizacja znajduje się w promieniu 10 kilometrów od samej , który pasowałby do wszystkich dokumentów.

Zamiast tego chcesz / powinieneś wysyłać zapytania do dokumentów, które znajdują się w promieniu 10 kilometrów od konkretnego lokalizacji i możesz przekazać współrzędne tej konkretnej lokalizacji do $centerSphere :

myLong, myLat := 10.0, 20.0

// ...

"$centerSphere": []interface{}{[]interface{}{myLong, myLat}, 10 / 6378.11}

Pełne zapytanie:

myLong, myLat := 10.0, 20.0
pipe := DB.C("store").Pipe([]bson.M{
    {"$project": bson.M{"location": bson.M{"type": bson.M{"$literal": "Point"}, "coordinates": []interface{}{"$longitude", "$latitude"}}}},
    {"$match": bson.M{"location.coordinates": bson.M{"$geoWithin": bson.M{"$centerSphere": []interface{}{[]interface{}{myLong, myLat}, 10 / 6378.11}}}}},
})



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Wyszukiwanie pełnotekstowe za pomocą Meteor.js i MongoDB

  2. C# MongoDB — Jak dodawać i usuwać elementy z wielu zagnieżdżonych elementów tablicy?

  3. Mongodb - dopasowanie regex kluczy dla poddokumentów

  4. MongoDB $pierwszy operator potoku agregacji

  5. Zwracanie pustej tablicy postów przy użyciu mangusty zapełnij