2014-09-15 2 views
1

version shell MongoDB: 2.0.4Comment insérer la date (comme date DataType) Dans Mongo de 'Invite de commandes Mongo' & De 'mongoimport'

Vous voulez insérer la date comme 'datatype de date' de la ligne de commande mongo.

db.my_date_collection.insert(
{"user_id" : 91, 
"event_timestamp" :new Date("09-AUG-12 05.30.28.402000 AM") 
}); 

Au-dessus de requête Ajouter un enregistrement mais la date de changement de "09-AUG-12 05.30.28.402000 AM" à "1970-01-01T00: 00: 00Z"

> db.my_date_collection.findOne() 
{ 
    "_id" : ObjectId("54168ddc289a635d725d86fb"), 
    "user_id" : 91, 
    "event_timestamp" : ISODate("1970-01-01T00:00:00Z") 
} 

De plus, il a également n » ai pas t-il sauver les données de date 'que la date 'datatype'

typeof db.my_date_collection.findOne().event_timestamp; 


object 

que quelqu'un peut me aider à insérer des données comme le type de date à partir mongo rapide?

En outre, quelqu'un peut-il me dire comment insérer le type de datatype "date comme date" d'un fichier tsv? comme j'ai eu le même problème en chargeant TSV de Mongoimport.

Merci

+0

Mongo utilise javascript, et le format de la date que vous avez mentionné est «non valide». – Ravi

Répondre

1

La date n'est pas dans un format valide pour être analysée par le constructeur de la date. Essayez la valeur équivalente dans un format valide (je suppose que l'heure UTC puisque vous n'avez pas inclus un fuseau horaire):

"09-AUG-12 05.30.28.402000 AM" => "2012-08-09T05: 30 : 28,402"

> var my_date = ISODate("2012-08-09T05:30:28.402") 
> db.my_dates.insert({ "x" : my_date }) 
> var doc = db.my_dates.findOne() 
> doc.x instanceof Date 
true 

la valeur de retour est de type date, mais Javascript est pas orienté objet donc le sens de cela et comment déterminer si quelque chose est de type date sont différentes que vous attendez, apparemment. Utilisez instanceof pour vérifier que quelque chose est d'un certain type ou "hérite" de ce type.

+0

merci pour l'aide , votre solution (changement dans mon format de date d'entrée) a bien fonctionné pour moi. – user3706888

0

Votre code est bon. Jetez un oeil à typeof doc. Il peut renvoyer un type plus générique. Utilisez instanceof pour vérifier un type:

db.my_date_collection.findOne().event_timestamp instanceof Date 
+0

Merci Piotr Encore une question, pourquoi ma date "09-AUG-12 05.30.28.402000 AM" enregistré en tant que "1970-01-01T00: 00: 00Z"? comment puis-je le réparer? – user3706888

+0

nouvelle Date ("09-AUG-12 05: 30: 28.402000 AM") devrait faire la chose. Veuillez marquer ma réponse comme utile. –

+0

merci pour la réponse Piotr mais "nouvelle Date (" 09-AUG-12 05: 30: 28.402000 AM ")" m'a donné les mêmes résultats "ISODate (" 1970-01-01T00: 00: 00Z ")" – user3706888

Questions connexes