2011-10-31 14 views
7

मैं इन दोनों को जोड़ने के लिए node-mongoskin का उपयोग कर रहा हूं। सब कुछ ठीक था जब तक कि मैंने कुछ "दिनांक" फ़ील्ड पूछताछ नहीं की जो मुझे लगता है कि जावास्क्रिप्ट के Date ऑब्जेक्ट के रूप में वापस किया जाना चाहिए। लेकिन परिणाम का प्रकार स्ट्रिंग था, जो अजीब (मेरे लिए) और असुविधाजनक है।MongoDB + Node.js: दिनांक को ठीक से सम्मिलित करने में असमर्थ

var doc = { 
    date: new Date(), 
    info: 'Some info' 
} 
db.users.insert(doc, {safe: true}, function(err, res) { 
    ... 
}); 

और इसके बाद के संस्करण का परिणाम (_id क्षेत्र के बिना) है:

डालने कुछ इस तरह दिखता

{ "date" : "Mon Oct 24 2011 18:00:57 GMT+0400 (MSK)", "info": "Some info" } 

हालांकि क्षेत्र के प्रकार है, सिवाय इसके, MongoDB शेल के साथ डालने बस ठीक काम करता है, ISODate

> db.things.insert({ date: new Date() }); db.things.find(); 
{ "_id" : ObjectId("4eae9f2a34067b92db8deb40"), "date" : ISODate("2011-10-31T13:14:18.947Z") } 

तो सवाल यह है कि कैसे sh क्या मैं Date ऑब्जेक्ट के रूप में क्वेरी दिनांक फ़ील्ड में दस्तावेज़ डाल सकता हूं? मैं जो चाहता हूं वह डेटाबेस-सर्वर-साइड पर फ़ील्ड सेट कर रहा है। मैं सिर्फ शून्य-फ़ील्ड जैसे कुछ भेजता हूं, और डीबी-सर्वर डिफ़ॉल्ट मैंगो तंत्र का उपयोग करके मेरे लिए सेटिंग करता है।

टाइमस्टैम्प डालने (native MongoDB timestamp) भी एक समस्या है, लेकिन यह इतना बड़ा सौदा नहीं है।

पीएस: कोई भाग्य mongoskin और mongodb-native दस्तावेज़ों के माध्यम से जा रहा है।

+0

मुझे लगता है, अद्यतन समस्या अद्यतन के साथ चली गई (सुनिश्चित नहीं है कि किसके: ड्राइवर का मोंगो है)। अभी भी सोच रहा है कि टाइमस्टैम्प को सही ढंग से कैसे डाला जाना चाहिए। – elmigranto

उत्तर

12

में उत्पादित यह शायद मेरी कोड में कुछ बग या मोंगो ड्राइवर था। अब, निम्नलिखित ठीक काम करता है:

db.collection.insert({d: new Date()}); 

टाइमस्टैम्प समर्थन यहां वर्णित है: http://mongodb.github.com/node-mongodb-native/api-bson-generated/timestamp.html

0

आईएसओडीएटी मोंगो स्टोर की तारीख के लिए मूल तरीका है। मैं नोड-मोंगोड-मूल एनपीएम मॉड्यूल का उपयोग करता हूं और मैं आपके उदाहरणों की तरह नई तिथि() मुहावरे का उपयोग करके जावास्क्रिप्ट दिनांक को संग्रहीत/पुनर्प्राप्त करता हूं। मुझे नहीं पता कि यह हालिया सुधार है क्योंकि मैंने 2012 में नोड और मोंगो शुरू किया था, लेकिन तारीख का उपयोग मेरे लिए काफी सरल था।

0

जावा स्क्रिप्ट कोड:

collection.insert({"className"  : "models.Action", 
         "title"   : "Email", 
         "description" : "How are you today?", 
         "creationDate" : new Date("Fry, 4 May 2012 10:30:08 +0200 (CEST)"), 
         "creator"  : dbref }, 

MongoDB

db.action.find({"title":"Email"}) 
> db.action.find({"title":"Email"}) 
{ "className" : "models.Action", "title" : "Email", "description" : "How are you today?", "creationDate" : ISODate("2012-05-04T08:30:08Z"), "creator" : { "$ref" : "person", "$id" : ObjectId("4f995e4824ac8d68f63adf69") }, "_id" : ObjectId("4fa79e2e92c2a19a09000002") } 
+0

धन्यवाद। लेकिन जैसा कि मैंने प्रश्न टिप्पणी में उल्लेख किया है, तारीख प्रविष्टि ठीक है। लेकिन टाइमस्टैम्प कैसे डाले जाते हैं ([mongodb प्रारूप में] (http://www.mongodb.org/display/DOCS/Timestamp+data+type))। मुझे लगता है कि यह 'collection.insert ({ts: new mongoskin.Timestamp()} के साथ किया जा सकता है)'। – elmigranto

संबंधित मुद्दे