2010-09-09 4 views
2

J'utilise le pilote MongoDB-Csharp et je me demandais quelle était la bonne façon d'insérer et d'interroger le champ de date?Samus Mongodb-csharp Insertion de dates et interrogation par dates

J'ai essayé d'utiliser le stockage des dates en utilisant System.DateTime, mais j'ai des problèmes lorsque j'essaie d'effectuer une requête par date.

exemple:

Comme la coquille MongoDB est une coquille JavaScript, Insertion de données

var mongo = new Mongo(); 
var db = mongo.GetDatabase(dbName); 
var collection = db.GetCollection(collectionName); 

var document = new Document(); 
document["date"] = DateTime.Now.ToUniversalTime(); 
collection.Save(document); 

Interrogation données

var mongo = new Mongo(); 
var db = mongo.GetDatabase(dbName); 
var collection = db.GetCollection(collectionName); 
var results = collection.Find(
new Document() 
{ 
    { 
     "date", 
     new Document() 
     { 
      { 
       "$lte", DateTime.Now.ToUniversalTime() 
      } 
     } 
    } 
} 
); 
+0

Cela semble bien. Quel est le problème exactement? N'obtenez-vous aucun résultat? –

+0

Merci d'avoir jeté un oeil! Mon mauvais, j'utilisais en fait le shell pour insérer les données. Lorsque j'ai exécuté le code ci-dessus, cela fonctionne réellement. Donc, ceci pourrait être une question secondaire, mais comment les dates doivent-elles être sauvegardées dans le shell MongoDB? – Abe

Répondre

1

vous devez utiliser the JavaScript Date object:

db.datetest.insert({"event": "New Year's Day 2011", "date": new Date(2011, 0, 1)}); 
db.datetest.insert({"event": "Now", "date": new Date()}); 

Notez que si vous passez année, le mois, la date au constructeur les mois commencent à 0.

Vous pouvez également passer une chaîne à son constructeur, mais il semble ignorer les paramètres régionaux si votre date doit être format de style américain:

db.datetest.insert({"event": "Christmas Day 2010", "date": new Date('12/25/2010')}); 

Assurez-vous d'utiliser new Date() plutôt que Date(), parce que Date() juste retourne une chaîne et vous ne serez pas en mesure de l'interroger comme une date.

Le pilote MongoDB-CSharp convertira l'objet .NET DateTime en objet Date MongoDB lorsqu'il le sérialisera en BSON.