当前位置: 首页 > 面试题库 >

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

松嘉颖
2023-03-14
问题内容

尝试按照此处的示例通过使用投影排除_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不应成为返回值的一部分。怎么了


问题答案:

要限制字段,您必须使用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();
    });


 类似资料:
  • 我正在使用Node.js和Mongoose检索Mongo文档,如下所示: 但它没有返回“_id”字段,我遗漏了什么? 在文档中,它说默认情况下应该包括_id 谢谢 **编辑** 解决方案:我必须在模式中指定它: var schema=新猫鼬。模式({u id:String……。});

  • 我正在使用Hibernate标准和投影来获得不同的值,如下所示: 我正在使用带有投影的结果转换器来获取不同值的列表

  • 问题内容: 我一直想知道应该使用哪种类型的投影,所以我做了一点测试,涵盖了5种类型的投影(基于docs:https : //docs.spring.io/spring- data/jpa/docs/current / reference / html /#projections ): 1.实体投影 这只是Spring Data存储库提供的标准。这里没什么好看的。 服务: 实体: 2.构造函数投影

  • 问题内容: 我只是想计算增值税,但是当我除以100以获得总价格(price * VAT / 100)时,它返回了0.0。这是我的代码: ‘total’被定义为FLOAT而不是INT 问题答案: 您需要将表达式强制转换为。我在这里使用了float文字。

  • 我有以下LINQ查询,这一个对我很有用 现在我需要的是排除一个月,即告诉查询不要向我显示1月和2月的月份。TallerDate包含一个列表的日期,即,在那个TallerDate中有几个日期为一月、二月和三月的记录。我在这个查询中所做的是将最低的月份(即一月和三月)带入f中,但这并不是必须的,正如我之前所说的,我需要的是TallerDate不显示一月和二月的月份,而是显示三月以后的月份