title: retrieve values between range time mongodb in an embedded array golang
body: <p>Here is my mongodb database :</p>
  
  <pre><code>"_id" : ObjectId("58808d735ba19c2797f486ca"),
  "userid" : ObjectId("58808d735ba19c2797f486c9"),
  "history" : [
      {
          "floorId" : "309cf96f-1812-44f6-8d94-d5ce2b8839be",
          "time" : ISODate("2017-01-19T09:57:34.572Z"),
          "position" : {
              "latitude" : 48.815267598833806,
              "longitude" : 2.3630101271630677
          },
          "pointcoordinates" : {
              "pointX" : 503.82333,
              "pointY" : 339.00385
          }
      },
      {
          "floorId" : "309cf96f-1812-44f6-8d94-d5ce2b8839be",
          "time" : ISODate("2017-01-19T09:57:34.574Z"),
          "position" : {
              "latitude" : 48.815267598833806,
              "longitude" : 2.3630101271630677
          },
          "pointcoordinates" : {
              "pointX" : 503.82333,
              "pointY" : 339.00385
          }
      }, ... This array is very huge !
  </code></pre>
  
  <p>I want to retrieve some values from "history" on a date range.</p>
  
  <p>First of all, I need to select the object of the "userid" I want to access then select "history". Then get values between date range I know.</p>
  
  <p>I'm using Golang with mgo.v2 (mongodb) driver.</p>
  
  <p>Here is my code :</p>
  
  <pre><code>id := queryValues.Get("id")
  startTime := queryValues.Get("startTime")
  endTime := queryValues.Get("endTime")
  
  //Here I get times in forme time.Time
  t_startTime, err := time.Parse(time.RFC3339Nano, startTime)
  t_endTime, err := time.Parse(time.RFC3339Nano, endTime)
  oid := bson.ObjectIdHex(id)
  //I select the range of time what I want
  selector := bson.M{"history": bson.M{"time": bson.M{"$gte": t_startTime, "$lte": t_endTime}}}
  if err := uc.session.DB("TEST").C("history").Find(bson.M{"userid": oid}).Select(selector).All(&amp;history); err != nil {
          fmt.Println(err)
          SendError(w, "GetHistory", "Error retrieving history")
      } else {
          spew.Dump(history)
      }
  </code></pre>
  
  <p>I got an error : </p>
  
  <blockquote>
    <p>Can't canonicalize query: BadValue Unsupported projection option: history: { time: { $gte: new Date(1484819854576), $lte: new Date(1484819854576) } }</p>
  </blockquote>
  
  <p>Can someone please help ?</p>