Express(NodeJS)不应用投影仪

时间:2015-09-17 16:12:10

标签: node.js mongodb express

在Mongo中,我可以运行以下命令返回字段的子集

db.IPs.find({},{_id:0,IntegrityID:1,Timestamp:1})

但是,当我尝试在Express中执行相同操作时,将返回所有字段。好像投影机被忽略了。

router.get('/', function(req, res, next) {
    var db = req.db;
    var collection = db.get('IPs');
    collection.find({},{_id:0,IntegrityID:1,Timestamp:1},function(e,docs){
        res.json(docs);
    });
}); 

1 个答案:

答案 0 :(得分:0)

您使用的语法看起来与您使用的驱动程序不同。以下是2.x文档中的示例:

  // Peform a simple find and return all the documents
    collection.find({}, {skip:1, limit:1, fields:{b:1}}).toArray(function(err, docs) {
      test.equal(null, err);
      test.equal(1, docs.length);
      test.equal(null, docs[0].a);
      test.equal(2, docs[0].b);

请注意,第二个find参数不仅包含要投影的字段。尝试调整查询以将投影包装在fields对象中。

collection.find({},{fields:{_id:0,IntegrityID:1,Timestamp:1}},function(e,docs){
    res.json(docs);
});

您可能还需要考虑使用toArray之类的示例文档而不是传递回调,但这只是一种风格建议。

collection.find的节点MongoDB Native 2.0文档是here

collection.find的节点MongoDB Native 1.4.9文档是here