Как сделать проекции выбранных атрибутов в монгоиде? - PullRequest
0 голосов
/ 20 октября 2011

У меня есть модель координат со многими маркерами встроенная модель пользователя. Как извлечь атрибуты без _ids, чтобы на выходе отображались только все lng и lat?

структура:

{ "_id" : ObjectId( "4e9f418f1e7bf20fbc000009" ),
  "name" : "test",
  "coordinates" : [ 
    { "lng" : 16.86783310009764,
      "lat" : 52.38353842845282,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000a" ) }, 
    { "lng" : 16.85787674023436,
      "lat" : 52.40972501601293,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000b" ) }, 
    { "lng" : 16.92276474072264,
      "lat" : 52.40071858320756,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000c" ) }, 
    { "lng" : 16.90182205273436,
      "lat" : 52.38270020105396,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000d" ) }, 
    { "lng" : 16.96705337597655,
      "lat" : 52.410661698108,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000e" ) }, 
    { "lng" : 16.89495559765624,
      "lat" : 52.42773236584494,
      "_id" : ObjectId( "4e9f418f1e7bf20fbc00000f" ) } ] }

, например

= debug @user.coordinates.to_json

дает:

--- ! '[{"_id":"4e9f418f1e7bf20fbc00000a","lat":52.383538428452816,"lng":16.86783310009764},{"_id":"4e9f418f1e7bf20fbc00000b","lat":52.40972501601293,"lng":16.85787674023436},{"_id":"4e9f418f1e7bf20fbc00000c","lat":52.40071858320756,"lng":16.92276474072264},{"_id":"4e9f418f1e7bf20fbc00000d","lat":52.382700201053964,"lng":16.90182205273436},{"_id":"4e9f418f1e7bf20fbc00000e","lat":52.410661698108,"lng":16.967053375976548},{"_id":"4e9f418f1e7bf20fbc00000f","lat":52.42773236584494,"lng":16.894955597656235}]'

ожидается:

--- ! '[{"lat":52.383538428452816,"lng":16.86783310009764},{"lat":52.40972501601293,"lng":16.85787674023436},{"lat":52.40071858320756,"lng":16.92276474072264},{"lat":52.382700201053964,"lng":16.90182205273436},{"lat":52.410661698108,"lng":16.967053375976548},{"lat":52.42773236584494,"lng":16.894955597656235}]'

Ответы [ 2 ]

2 голосов
/ 20 октября 2011

Попробуйте использовать , за исключением

 @user.coordinates.to_json(:except => '_id')
0 голосов
/ 20 марта 2014

принятый ответ возвращает данные, которые вы хотели. Я бы предложил использовать without против mongoid запроса, чтобы вы на самом деле не получали данные из БД, что идеально.

@user.coordinates.without('_id').to_json(:except => '_id')
...