一尘不染

带有投影以排除_id的Node.js MongoDB Find仍返回它

node.js

尝试按照此处的示例通过使用投影排除_id进行过滤。_id仍然返回:

var MongoClient = require('mongodb').MongoClient;
var url = "mongodb://localhost:27017/db1";

MongoClient.connect(url, function (err, db) {
    if (err) throw err;
    var dbase = db.db("db1"); //here

    dbase.collection("customers").find(
        {},
        {
            _id: 0

        }
        ).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });

});

结果仍然返回如下:

[{_id:5a2bb2d6ee48575cb54c4365,名称:“约翰”,地址:“ Highway
71”},{_id:5a2bb2d6ee48575cb54c436d,名称:“苏珊”,地址:“单向98”},…。{_id:5a2bb2d6ee48575b
:’Chuck’,地址:’Main Road
989’},{_id:5a2bb2d6ee48575cb54c4372,名称:’Viola’,地址:’Sideway 1633’}]

从理论上讲,_id不应成为返回值的一部分。怎么了


阅读 200

收藏
2020-07-07

共1个答案

一尘不染

要限制字段,您必须使用fieldsoption(不知道新更新):

dbase.collection("customers").find(
        {},
        {fields:{_id: 0}}
        ).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });

更新:

对于版本> 3,您必须使用projection选项:

dbase.collection("customers").find(
        {},
        {projection:{_id: 0}}
        ).toArray(function(err, result) {
        if (err) throw err;
        console.log(result);
        db.close();
    });
2020-07-07