2013-12-13 9 views
28

मैं नोड-मोंगोड-मूल ड्राइवर (http://mongodb.github.io/node-mongodb-native/) के साथ नोडजेज़ का उपयोग कर रहा हूं।MongoDB + nodejs: ISODate फ़ील्ड से पूछताछ कैसे करें?

मेरे पास ISODate प्रकार के रूप में संग्रहीत दिनांक संपत्ति के साथ दस्तावेज़ हैं।

NodeJS के माध्यम से, मैं इस क्वेरी का उपयोग कर रहा हूँ:

db.collection("log").find({ 
    localHitDate: { 
      '$gte': '2013-12-12T16:00:00.000Z', 
      '$lt': '2013-12-12T18:00:00.000Z' 
    } 
}) 

यह कुछ भी नहीं देता है। यह काम करने के लिए मैं निम्नलिखित बजाय क्या करने की जरूरत:

db.collection("log").find({ 
    localHitDate: { 
      '$gte': ISODate('2013-12-12T16:00:00.000Z'), 
      '$lt': ISODate('2013-12-12T18:00:00.000Z') 
    } 
}) 

लेकिन ISODate मेरी NodeJS कोड में मान्यता प्राप्त नहीं है।

तो मैं अपने नोडजेस कार्यक्रम के माध्यम से मोंगो तिथि फ़ील्ड के खिलाफ एक प्रश्न कैसे बना सकता हूं?

धन्यवाद

उत्तर

40

आप new Date('2013-12-12T16:00:00.000Z')node.js में उपयोग कर सकते हैं;

new एक जरूरी है, क्योंकि दिनांक() पहले से ही तारीख स्ट्रिंग को वापस करने के लिए उपयोग किया जा रहा है।

आईएसओडीएटी को मोंगोडब में अवधारित किया गया है, आप इसे मोंगोड कंसोल में उपयोग कर सकते हैं, लेकिन यह विभिन्न प्रोग्रामिंग भाषा के लिए अलग हो सकता है।

+0

im वास्तव में इस के साथ एक सुपर कठिन समय चल ... मैं नहीं कर सकते मेरे जीवन को बचाने के लिए मोंगो में एक यूटीसी isodate स्टोर करने के लिए लग रहे हैं ... http://stackoverflow.com/questions/26874993/javascript-momentjs -convert-UTC-से-स्ट्रिंग-टू-डेट-वस्तु – Cmag

3

आप के लिए मुझे पूरी तरह से

//lets require/import the mongodb native drivers. 
var mongodb = require('mongodb'); 

//We need to work with "MongoClient" interface in order to connect to a mongodb server. 
var MongoClient = mongodb.MongoClient; 

// Connection URL. This is where your mongodb server is running. 
var url = 'mongodb://localhost/klevin'; 

// Use connect method to connect to the Server 
MongoClient.connect(url, function (err, db) { 

    if (err) { 
    console.log('Unable to connect to the mongoDB server. Error:', err); 
    } else { 
    //HURRAY!! We are connected. :) 
    console.log('Connection established to', url); 


    // Get the documents collection 
    var collection = db.collection('frames'); 

    //We have a cursor now with our find criteria 
    var cursor = collection.find({ 
     tv: 'tematv', 
     date_created: {"$gte": new Date("2015-10-01T00:00:00.000Z") , "$lt": new Date("2017-03-13T16:17:36.470Z") }}); 

    //We need to sort by age descending 
    cursor.sort({_id: -1}); 

    //Limit to max 10 records 
    cursor.limit(50); 

    //Skip specified records. 0 for skipping 0 records. 
    cursor.skip(0); 


    //Lets iterate on the result 
    cursor.each(function (err, doc) { 

     if (err) { 

     console.log(err); 

     } else { 

     console.log('Fetched:', doc); 

     if(doc !== null){ 

     } 

     } 
    }); 


    } 

}); 
0

काम किया, इसका उपयोग कर सकते हम नई तिथि उपयोग करने की आवश्यकता() डेटा प्राप्त करने के लिए सबसे अच्छा विकल्प है।

db.getCollection('orders').aggregate([ 
    { 
    '$match': { 
     $and: [ 
     { 
      status: 'UNASSIGNED' 
     }, 
     { 
      plannedDeliveryDate: { 
      '$eq': new Date('2017-10-09') 
      } 
     } 
     ] 
    } 
    }, 
    { 
    $lookup: { 
     from: "servicelocations", 
     localField: "serviceLocationId", 
     foreignField: "serviceLocationId", 
     as: "locations" 
    } 
    }, 
    { 
    $unwind: "$locations" 
    }, 
    { 
    "$project": { 
     "accountId": 1, 
     "orderId": 1, 
     "serviceLocationId": 1, 
     "orderDate": 1, 
     "description": 1, 
     "serviceType": 1, 
     "orderSource": 1, 
     "takenBy": 1, 
     "plannedDeliveryDate": 1, 
     "plannedDeliveryTime": 1, 
     "actualDeliveryDate": 1, 
     "actualDeliveryTime": 1, 
     "deliveredBy": 1, 
     "size1": 1, 
     "size2": 1, 
     "size3": 1, 
     "jobPriority": 1, 
     "cancelReason": 1, 
     "cancelDate": 1, 
     "cancelBy": 1, 
     "reasonCode": 1, 
     "reasonText": 1, 
     "status": 1, 
     "lineItems": 1, 
     "locations": { 
     "lng": "$locations.location.lng", 
     "lat": "$locations.location.lat" 
     } 
    } 
    } 
]) 
संबंधित मुद्दे