Uploaded image for project: 'Node.js Driver'
  1. Node.js Driver
  2. NODE-20

Query for timestamp has inconsistent behavior

    XMLWordPrintableJSON

Details

    • Icon: Bug Bug
    • Resolution: Done
    • Icon: Major - P3 Major - P3
    • None
    • None
    • None

    Description

      When inserting a document with a property of value Timestamp() and this is queried, then this works fine.

      However, if the dataset contains a second document with a property of Date(), completely unrelated to the first document, and a query for Timestamp() is issued, the driver errors out.

      The following code shows the error case. If you comment out the document with the Date() property, the query works on the single document.

      var Db = require('mongodb').Db,
      Server = require('mongodb').Server,
      ObjectID = require('mongodb').ObjectID,
      Binary = require('mongodb').Binary,
      GridStore = require('mongodb').GridStore,
      Code = require('mongodb').Code,
      BSON = require('mongodb').pure().BSON,
      assert = require('assert'),
      MongoDB = require('mongodb');

      var db = new Db('jiras', new Server("127.0.0.1", 27017,

      {auto_reconnect: false, poolSize: 4}

      ),

      {w: 0, native_parser: false}

      );

      db.open(function (err, db) {
      db.dropCollection("timestamp", function (err, result) {

      db.createCollection('timestamp', function (err, collection) {
      if (err)

      { console.log(err); }

      var timestampDocument =

      {"x": new MongoDB.Timestamp(1, 2), "comment": "Timestamp(1,2)"}

      ;
      var dateDocument =

      {"x": new Date("2012-08-31 12:13:14:156 UTC"), "comment": "2012-08-31 12:13:14:156 UTC"}

      ;
      console.log("original document:");
      console.log(timestampDocument);
      console.log(dateDocument);

      collection.insert([timestampDocument, dateDocument],

      {w: 1}

      , function (err, result) {
      var timestampQuery =

      {"x": new MongoDB.Timestamp(1, 2)}

      ;
      var cursor;
      var cursorStream;

      assert.equal(null, err);

      cursor = collection.find(timestampQuery);
      cursorStream = cursor.stream();
      cursorStream.on("data", function (docs)

      { console.log("query:"); console.log(timestampQuery); console.log("result document:"); console.log(docs); }

      );
      cursorStream.on("close", function ()

      { db.close(); }

      );
      cursorStream.on("error", function (err)

      { console.log(err); }

      );
      });
      });
      });
      });

      Attachments

        Activity

          People

            christkv Christian Amor Kvalheim
            chris@real-programmer.com Christoph Bussler
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: