MongoDB不限于查询字段

时间:2013-10-07 16:16:15

标签: javascript node.js mongodb

我有一个mongodb查询,我在其中请求有限数量的字段。但它仍然返回整行。有人可以帮忙吗?

collection.find(
        { username: searchterm },
        { username: 1 }, 
        function(e, docs){
            console.log('---- DB RESULT');
            console.log(docs);
            res.writeHead(200, {'content-type': 'text/json' });
            res.write( JSON.stringify({ 'docs' : docs }) );
            res.end('\n');
        }
    );

1 个答案:

答案 0 :(得分:3)

由于你正在使用node-mongodb-native驱动程序,这应该有用(假设结果数量不是太大,因为toArray()在调用回调之前首先将所有结果读入内存):

collection.find(
  { username: searchterm },
  { username: 1 } // [ 'username' ] works too
).toArray(function(e, docs) {
  // TODO: handle error...
  console.log('---- DB RESULT');
  console.log(docs);
  res.writeHead(200, {'content-type': 'text/json' });
  res.write( JSON.stringify({ 'docs' : docs }) );
  res.end('\n');
});

如果你期望得到很多结果,你可能想要使用流式传输,也许使用JSONStream

// Create a cursor stream.
var stream = coll.find(...).stream();

// Set correct Content-Type.
res.setHeader('Content-Type', 'application/json');

// Pipe cursor stream, convert it to JSON, and write to the client.
stream.pipe(JSONStream.stringify()).pipe(res);

(我用Express对此进行了测试,但我发现您似乎使用了普通的http;我认为它仍然有用{/ p>