Node.js 投影无法在mongo中使用db.collection.find

Node.js 投影无法在mongo中使用db.collection.find,node.js,mongodb,amazon,cloud9,Node.js,Mongodb,Amazon,Cloud9,一天前我刚开始使用mongodb,遇到了一个问题。 我在网上和stackoverflow上搜索如何在最终答案中隐藏_id值,并按照提供的答案尝试运行代码,但仍然显示_id部分 注:我正在使用cloud9作为ide var mongo = require('mongodb').MongoClient; mongo.connect('mongodb://localhost:27017/learnyoumongo', function(err, database) { if(err)

一天前我刚开始使用mongodb,遇到了一个问题。 我在网上和stackoverflow上搜索如何在最终答案中隐藏_id值,并按照提供的答案尝试运行代码,但仍然显示_id部分

注:我正在使用cloud9作为ide

var mongo = require('mongodb').MongoClient;
mongo.connect('mongodb://localhost:27017/learnyoumongo', function(err, database) {
        if(err) throw err;
        const db = database.db('learnyoumongo');
        var parrots = db.collection('parrots');
        parrots.find({
            age: { $gt: +process.argv[2] }
        },{
            name: 1,
            age: 1,
            _id: 0
        }).toArray(function(err, docs){
            if(err) throw err;
            console.log(docs);
            database.close();
        });
});

你可以像这样分开投影:

    parrots.find({
        age: { $gt: +process.argv[2] }
    }).project({_id:0}).toArray(function(err, docs){
        if(err) throw err;
        console.log(docs);
        database.close();
    });

我遇到了同样的问题,无法使投影正常工作,而上述方法对我很有效

您能否发布文档的结构?您不能同时拥有1和0。因此,您可以通过将字段标记为1来选择想要的内容,也可以通过将字段标记为0来选择不想要的内容。例如,我在一个对象中有4个字段
电子邮件、姓名、年龄、性别
。我只想收到
电子邮件
姓名
。我可以做
{Email:1,Name:1}
或者
{Age:0,Gender:0}
你的代码很好,我已经测试过了,可以用了。你有错误吗??它没有按预期返回数据??是的,我得到了0和1部分,但我的代码似乎不理解I。不,我没有任何错误,但输出不是我所需要的。我想隐藏id属性,该属性尝试使用0标志执行,但id仍然显示在最终输出中!!成功了。我很想知道为什么它不能像文档中解释的那样工作。这是一个巨大的突破性变化;谢谢你指出这一点。在看到这个答案后,我浏览了github回购协议。这里提到了“v2对v3”的例子。(v3上有很多突破性的变化)。回答得好!完全正确那真是糟透了!我花了一个小时想知道出了什么问题,我的查询在Robo3T中运行良好,而在node中则不起作用!:/谢谢你的回答!谢谢它起作用了!我花了好几个小时挠头,直到找到这篇文章。