Nous essayons d'insérer un document avec la date actuelle comme champ. Nous écrivons en Java en utilisant le plugin Eclipse pour mongodb. Nous voulons exécuter la commande Date()
de mongo pour obtenir la date de mongo et non de Java.
Comment puis-je exécuter cette requête mongo?
db.example.insert({"date":new Date()})
J'ai trouvé cette question dans une question d'aperçu mais la réponse n'était pas utile
Le pilote standard prend Java.util.date types et sérialise en tant que dates BSON. Donc, avec un objet de collection à "exemple"
Date now = new Date();
BasicDBObject timeNow = new BasicDBObject("date", now);
example.insert(timeNow);
Si vous cherchez un moyen d'utiliser le temps "serveur" dans les opérations, il y a $currentDate
, mais cela fonctionne avec les "mises à jour", donc vous voudriez une opération "upsert":
BasicDBObject query = new BasicDBObect();
BasicDBObject update = new BasicDBObject("$currentDate",
new BasicDBObject("date", true)
);
example.update(query,update,true,false);
Étant donné qu'il s'agit en fait d'une déclaration de mise à jour, vous devez faire attention à ne faire correspondre aucun document si vous souhaitez que ce soit uniquement un encart. Il serait donc préférable de vous assurer que votre "requête" contient des informations uniques, telles qu'un _id
ou quelque chose de tout aussi unique.
Vous pouvez le faire en essayant quelque chose comme ceci:
db.example.insert({"date":ISODate("2016-03-03T08:00:00.000")});
Utilisez ceci:
db.example.insert({"date":new Date(Date.now())});