NodeJS의 Mongo 데이터베이스에 삽입 된 문서의 _id를 가져옵니다. MongoDB에 문서를 삽입합니다. 사용하면 collection.insert다음 코드와 같이

NodeJS를 사용하여 MongoDB에 문서를 삽입합니다. 사용하면 collection.insert다음 코드와 같이 데이터베이스에 문서를 삽입 할 수 있습니다.

// ...
collection.insert(objectToInsert, function(err){
   if (err) return;
   // Object inserted successfully.
   var objectId; // = ???
});
// ...

_id삽입 된 개체를 어떻게 얻을 수 있습니까?

_id최신 개체를 삽입하지 않고 얻을 수있는 방법이 _id있습니까?

동시에 많은 사람들이 데이터베이스에 액세스한다고 가정하면 최신 ID가 삽입 된 개체의 ID인지 확신 할 수 없습니다.



답변

collection.insert_id가 있어야하는 삽입 된 문서 또는 문서를 리턴하는 콜백에 대한 두 번째 매개 변수 가 있습니다.

시험:

collection.insert(objectToInsert, function(err,docsInserted){
    console.log(docsInserted);
});

콘솔에서 무슨 뜻인지 확인하십시오.


답변

콜백에 두 번째 매개 변수를 사용하는 것보다 짧은 방법 은 (콜백 함수 내부에서 성공적인 작업이라고 가정 collection.insert하여) objectToInsert._id를 반환하는 것 _id입니다.

NodeJS 용 Mongo 드라이버 _id는 원본 개체 참조에 필드를 추가 하므로 원본 개체를 사용하여 삽입 된 ID를 쉽게 얻을 수 있습니다.

collection.insert(objectToInsert, function(err){
   if (err) return;
   // Object inserted successfully.
   var objectId = objectToInsert._id; // this will return the id of object inserted
});


답변

ktretyak이 말했듯이 삽입 된 문서의 ID를 얻는 가장 좋은 방법은 결과 객체에 insertId 속성을 사용하는 것입니다. 제 경우에는 result._id가 작동하지 않았으므로 다음을 사용해야했습니다.

db.collection("collection-name")
  .insertOne(document)
  .then(result => {
    console.log(result.insertedId);
  })
  .catch(err => {
    // handle error
  });

콜백을 사용하는 경우도 마찬가지입니다.


답변

실제로 삽입 용 콜백 함수의 두 번째 매개 변수에 대해 console.log ()를 수행했습니다. 실제로 삽입 된 개체 자체와는 별도로 많은 정보가 반환됩니다. 따라서 아래 코드는 ID에 액세스하는 방법을 설명합니다.

collection.insert(objToInsert, function (err, result){
    if(err)console.log(err);
    else {
        console.log(result["ops"][0]["_id"]);
        // The above statement will output the id of the 
        // inserted object
       }
});


답변

Mongo는 전체 문서를 콜백 객체로 전송하므로 여기에서만 가져올 수 있습니다.

예를 들면

collection.save(function(err,room){
  var newRoomId = room._id;
  });


답변

이제 insertOne 메서드와 promise의 결과를 사용할 수 있습니다.


답변

@JSideris, insertId를 얻기위한 샘플 코드.

db.collection(COLLECTION).insertOne(data, (err, result) => {
    if (err)
      return err;
    else
      return result.insertedId;
  });