限制find()中字段的第二个参数在Mongodb中不起作用

时间:2017-12-25 12:07:22

标签: mongodb

Mongodb Database view

我想省略结果中的_id字段

MongoClient.connect("mongodb://localhost:27017/",function(err,client){
    var db = client.db("customerDetails");
    db.collection("customerName").find({},{ _id : 0}).toArray(function(error,result){
        console.log(result);
        client.close();
    });
});

从w3学校抬头看

但不知怎的,它不起作用。我仍然在结果对象中获得_id字段。 我错过了什么?

3 个答案:

答案 0 :(得分:1)

在mongodb驱动程序的3.0版本中,find()的第二个参数是选项对象,而不是投影文档。请参阅文档here。要发送投影文档,请设置选项文档的projection属性。 E.g。

db.collection("customerName").find({}, { projection: { _id: 0 } })

或者,使用project method

db.collection("customerName").find({}).project({ _id: 0 })

在mongodb驱动程序的2.2版本中,find的第二个参数确实是投影文档。这在最新版本(3.0)中已更改。所以一些博客文章可能不是最新的。请参阅3.0更改日志here的相关部分。

答案 1 :(得分:0)

这应该有效。使用布尔值" false"。

process.emit('warning', new Warning('foo bar baz'));

答案 2 :(得分:0)

在mongodb的版本3.4.9中,您可以通过以下方式实现此目的:

db.getCollection('data').find({}, { _id: 0 })