Golang/mgo: Wie kann ich Fragen, MongoDB verwenden aktuelle Uhrzeit in ein Feld?

Habe ich diese Struktur entspricht, die Typen einer MongoDB-collection, die ich verwende:

type AppInstance struct {
    Id bson.ObjectId "_id,omitempty"
    Url string
    Priority int
    LastSeen string
}

Möchte ich die LastSeen Feld zu halten, dem Zeitpunkt der letzten Interaktion mit dieser bestimmten app. So, die app registriert sich selbst einstellen der aktuellen Zeit (als string).

Was ich möchte ist, Mongo dynamisch Ihre eigene aktuelle Uhrzeit in das Feld, wenn es Einsätze, genauso wie die MySQL-JETZT () - Funktion tun würde.

Habe ich diese helper-Funktion:

func mongoNow() bson.JavaScript {
    return bson.JavaScript{Code: 
         "return (new Date()).ISODate('YYYY-MM-DD hh:mm:ss');"}
}

Und ich versuchte dies:

c := mongoSession.DB("myapp").C("instances")
rand.Seed(time.Now().UnixNano())
err := c.Insert(
   struct{Id, Serial, Priority, Url, LastSeen interface{}}{ 
      Id: bson.NewObjectId(), 
      Url: getInformedHost() + ":" + getRunningPortString(), 
      Priority: rand.Int(), 
      LastSeen: mongoNow() }
)
checkError(err, "Could not register on MongoDB server.", 3)

dem LastSeen-Feld gespeichert wird, wie ein Skript anstelle ausgewertet:

[_id] => MongoId Object (
    [$id] => 502d6f984eaead30a134fa10
)
[id] => MongoId Object (
    [$id] => 502d6f98aa443e0ffd000001
)
[priority] => 1694546828
[url] => 127.0.0.1:8080
[lastseen] => MongoCode Object (
    [code] => (new Date()).ISODate('YYYY-MM-DD hh:mm:ss')
    [scope] => Array (
    )
)

So, ich denke, es gibt auf die Fragen:

Erstens, wie kann ich das einfügen der aktuellen Zeit?

Zweitens, wie kann ich eine javascript ausgewertet anstelle von eingefügt?

Die Antwort auf die zweite könnte ausreichen, um Antwort auf die erste, aber es könnte genauso gut nicht sein.

InformationsquelleAutor der Frage Sebastián Grignoli | 2012-08-16

Schreibe einen Kommentar