为什么此查询在mongo shell中工作,而不是在节点mongo驱动程序中工作?

时间:2017-01-12 20:06:03

标签: node.js mongodb

我在shell中成功运行了这个查询:

db.hourlydatas.find({'timeseries':ObjectId('1234')})

尝试将其转换为mongo驱动程序:

MongoClient.connect(config.db, function(err, db) {
// Use the admin database for the operation

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

collection.find({'timeseries':'1234'}).toArray(function(err, docs) {
//   assert.equal(err, null);
console.log("Found the following records");
console.log(docs);
// callback(docs);
});      

});

这不返回任何文档,我假设因为我没有将字符串转换为objectID。这可能在驱动程序中吗?

2 个答案:

答案 0 :(得分:1)

试试这个

var ObjectId = require('mongodb').ObjectID;
var collection = db.collection('hourlydatas');
collection.find({'timeseries':ObjectId('1234')}).toArray(function(err,docs) {...}

答案 1 :(得分:0)

它应该可以工作,你确定你连接到同一个数据库吗?检查两个连接是否要测试或刺激...我曾经浪费了很多时间,最后发现我的mongo-shell连接到prod,而节点连接到测试。