节点js Mongodb查询号码

时间:2014-02-19 02:50:28

标签: javascript node.js mongodb

我有一个日期字段存储在mongo集合中作为NumberLong

此集合上的日期字段{$ gte:NumberLong(“635186135151387725”)}的节点查询是 虽然mongoshell中的相同作品没有拉任何记录。

我尝试使用require('mongodb')。查询为长 {$ gte:Long.fromString(“635186135151387725”,10)}但是没有用。

还试过模块“node-int64”,“int64-native”但没有运气。

是否有节点模块可以救援?

1 个答案:

答案 0 :(得分:11)

这对我来说很好,也许你的查询没有正确发布。请考虑以下数据和代码作为比较示例:

> db.test.find()
{ 
    "_id" : ObjectId("5303f24423d2721c25c493ee"), 
    "ts" : NumberLong("635186135151387725") 
}
{ 
    "_id" : ObjectId("5303f24a23d2721c25c493ef"), 
    "ts" : NumberLong("635186135151387726") 
}
>

找到的代码:

var MongoClient = require('mongodb').MongoClient;

var Long = require('mongodb').Long;

MongoClient.connect('mongodb://localhost/test', function(err, db) {

    var collection = db.collection('test');

    var value = Long.fromString("635186135151387726");

    console.log( value );

    var cursor = collection.find({ ts: {"$gte": value} });

    cursor.toArray(function(err, items) {
        console.log( items );
    });

});

按预期提供输出:

{ _bsontype: 'Long', low_: -1342987186, high_: 147890796 }
[ { _id: 5303f24a23d2721c25c493ef,
    ts: { _bsontype: 'Long', low_: -1342987186, high_: 147890796 } } ]