在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);
});
});
答案 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。