尝试按照此处的示例过滤使用投影来排除_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();
});
});
Run Code Online (Sandbox Code Playgroud)
结果仍然如下返回:
[{_id:5a2bb2d6ee48575cb54c4365,姓名:'John',地址:'Highway 71'},{_ id:5a2bb2d6ee48575cb54c436d,姓名:'Susan',地址:'One way 98'},.... {_ id:5a2bb2d6ee48575cb54c4371,name :'Chuck',地址:'Main Road 989'},{_ id:5a2bb2d6ee48575cb54c4372,名称:'Viola',地址:'Sideway 1633'}]
理论上_id不应该是返回的一部分.这有什么不对?
wra*_*ler 25
要限制您必须使用的字段fields选项(不知道新的更新):
dbase.collection("customers").find(
{},
{fields:{_id: 0}}
).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
Run Code Online (Sandbox Code Playgroud)
更新:
对于版本> 3,您必须使用projection选项:
dbase.collection("customers").find(
{},
{projection:{_id: 0}}
).toArray(function(err, result) {
if (err) throw err;
console.log(result);
db.close();
});
Run Code Online (Sandbox Code Playgroud)
ras*_*ing 10
在MongoDB API的第3版中,该fields选项已被弃用.您现在应该使用该projection选项.
例如:
dbase.collection('customers').find({}, {
projection: {
_id: 0
}
}).toArray(function (err, result) {
if (err) {
throw err
}
console.log(result)
db.close()
})
Run Code Online (Sandbox Code Playgroud)
支持的选项的完整列表可以在这里找到:http://mongodb.github.io/node-mongodb-native/3.0/api/Collection.html#find
从版本 3.4 开始,现在可以选择在 find() 之外添加 .project()。
使用 ES8 异步,等待。
前任:
async function connectDB(url) {
try {
const db = await MongoClient.connect(url);
const dbase = db.db("db1"); //here
const results = await dbase.collection("customers").find().project({_id:0}).toArray();
console.log(result);
db.close();
}
catch(err) {
throw err;
}
}Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7768 次 |
| 最近记录: |