鍍金池/ 問(wèn)答/數(shù)據(jù)庫(kù)  網(wǎng)絡(luò)安全  HTML/ nodejs操作mongodb findOne/find 設(shè)置 projecti

nodejs操作mongodb findOne/find 設(shè)置 projection 參數(shù) 不起作用?

mongodb:3.6.5
node:9.9.0
koa:2.5.0
npm-mongodb:3.0.5

遇到的問(wèn)題:

用findOne/find帶projection參數(shù)查詢
在node里 返回結(jié)果仍然帶有被剔除的字段

router.post('/manage', async(ctx, next) => {
    var users = db.collection("user");
    var doc = await users.findOne({userName:'yunf'},{_id:0});
    var doc1 = await users.find({userName:'yunf'},{_id:0}).toArray();
   
    console.log(doc);
    console.log(doc1 );
});
            
// 返回的結(jié)果仍然帶有被剔除的字段

// { 
//   _id: 5ac1cfe24a814acb143e3084,
//   userName: 'yunf',
//   authority: '00000000010000',
//   cerationTime: '',
//   updateTime: 2018-04-06T06:18:55.188Z,
//   userPwd: '$2a$10$IA7/C9fplPoxY6ilTbadyeBJjAxHRUIgP.ezOQqYMCv7vHXPhx39u' 
// }...

但同樣的代碼 shell正常返回
圖片描述

查過(guò)mongodb 3.6的文檔find()查詢返回的是游標(biāo) 可以用project指定返回的字段

var cursor3 = db.collection('user').find({}).project({_id: 0 }).toArray();

// { userName: 'yunf'}]

但是為什么用findOne/find帶projection參數(shù)查詢 會(huì)不起作用
是版本問(wèn)題???求大佬指點(diǎn)!?。。。。。。。。。。。。。。?/p>

回答
編輯回答
笨笨噠

你所使用的mongodb是nodejs的一個(gè)package,而不是原生的查詢語(yǔ)句,那是package生成的最終的結(jié)果。
Node.js MongoDB Driver API

文檔里寫很清楚find(query, options)options的定義里是沒(méi)有_id的,里面有projection應(yīng)該就是你想要的。

2017年4月13日 10:51