programing

제외할 투영을 사용하여 Node.js MongoDB 찾기 _id가 여전히 반환합니다.

batch 2023. 7. 15. 09:58
반응형

제외할 투영을 사용하여 Node.js MongoDB 찾기 _id가 여전히 반환합니다.

_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, 이름 : 'John', 주소 : 'Highway 71', {id : 5a2bb2d6ee485cb54c436d, 이름 : 'Susan', 주소 : 'Oneway 98', ... {id : 5a2bbbbb2d675c4371, 이름 : Chuck', 메인로드명 : 298bi2bi2bi2d2, 주소 : 299, 주소 : 298c2bi2bi2bi2bi

이론적으로 _id는 반환되는 항목의 일부가 되어서는 안 됩니다.여기서 뭐가 문제야?

사용할 필드를 제한하려면fields옵션(새 업데이트에 대해 알 수 없음):

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();
});

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()
})

지원되는 옵션의 전체 목록은 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;
  }
 }

문서는 여기에, 다른 는 여기에 있습니다.

언급URL : https://stackoverflow.com/questions/47732061/node-js-mongodb-find-with-projection-to-exclude-id-still-returns-it

반응형