Golang / mgo: Comment puis-je demander à MongoDB d'utiliser l'heure actuelle dans un champ?

J'ai cette structure qui correspond à des types d'une collection MongoDB, je suis en utilisant:

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

Je veux le LastSeen champ de tenir le temps de la dernière interaction avec cette application particulière. Ainsi, l'application enregistre lui-même réglage de l'heure actuelle (comme une chaîne de caractères).

Ce que je voudrais, c'est Mongo pour définir dynamiquement ses propres heure actuelle dans ce domaine lorsqu'il insère, tout comme MySQL, la fonction NOW() ferait.

J'ai cette fonction d'assistance:

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

Et j'ai essayé ceci:

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)

la LastSeen champ est stocké comme un script au lieu de l'évaluation:

[_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 (
    )
)

Donc, je pense qu'il y a de questions:

Tout d'abord, comment puis-je insérer l'heure actuelle?

Deuxièmement, comment puis-je obtenir un peu de javascript (évalué au lieu de les insérer?

La réponse à la deuxième on pourrait suffire à répondre à la première, mais il pourrait aussi bien ne pas l'être.

source d'informationauteur Sebastián Grignoli