복붙노트

[MONGODB] NodeJS에서 몽고 데이터베이스에 삽입 된 문서의 _id를 가져옵니다

MONGODB

NodeJS에서 몽고 데이터베이스에 삽입 된 문서의 _id를 가져옵니다

나는 MongoDB의 문서를 삽입 할 NodeJS를 사용합니다. 이 코드처럼 데이터베이스에 문서를 삽입 할 수 있습니다 collection.insert 사용 :

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

어떻게 삽입 된 개체의 _id를받을 수 있나요?

최신 개체 삽입 _id를 얻기없이 _id를 얻을 수있는 방법이 있습니까?

같은 시간에 많은 사람들이 데이터베이스에 액세스 할 것으로 가정하면, 나는 최신 ID가 삽입 된 개체의 id는 것을 확신 할 수 없다.

해결법

  1. ==============================

    1._ids이 있어야 문서 또는 문서가 삽입 돌아갑니다 collection.insert에 대한 콜백을위한 두 번째 매개 변수가 있습니다.

    _ids이 있어야 문서 또는 문서가 삽입 돌아갑니다 collection.insert에 대한 콜백을위한 두 번째 매개 변수가 있습니다.

    시험:

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

    내가 무엇을 의미하는지에 관해 알기 위해 콘솔을 확인하십시오.

  2. ==============================

    2.collection.insert의 콜백 번째 매개 변수를 사용하여보다 짧은 방법 되돌아가 _id (콜백 함수의 내부는, 그것을 상정하면 성공적인 작업이었다)를 사용하는 것이 objectToInsert._id 것이다.

    collection.insert의 콜백 번째 매개 변수를 사용하여보다 짧은 방법 되돌아가 _id (콜백 함수의 내부는, 그것을 상정하면 성공적인 작업이었다)를 사용하는 것이 objectToInsert._id 것이다.

    원래 객체를 사용하여 삽입 된 ID를 쉽게 얻을 수 있도록 NodeJS의 몽고 드라이버는, 원래의 객체 참조에 _id 필드를 추가합니다 :

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

    3.ktretyak 말했듯이, 삽입하려면 문서의 ID 가장 좋은 방법은 결과 개체에 insertedId 속성을 사용하는 것입니다. 나는 다음과 같은 사용했다, 그래서 내 경우에는 result._id 작동하지 않았다 :

    ktretyak 말했듯이, 삽입하려면 문서의 ID 가장 좋은 방법은 결과 개체에 insertedId 속성을 사용하는 것입니다. 나는 다음과 같은 사용했다, 그래서 내 경우에는 result._id 작동하지 않았다 :

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

    당신이 콜백을 사용하는 경우이 같은 일입니다.

  4. ==============================

    4.실제로 삽입에 대한 콜백 함수의 두 번째 매개 변수에 대한을 console.log ()를했다. 삽입 된 개체 자체에서 떨어져 반환 된 정보의 많은 실제로있다. 그래서 아래의 코드는 그것의 ID에 액세스 할 수있는 방법을 설명합니다.

    실제로 삽입에 대한 콜백 함수의 두 번째 매개 변수에 대한을 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
           }
    });
    
  5. ==============================

    5.당신은 단순히 거기에만에서 그것을 얻을 수 있도록 몽고는 callbackobject로 전체 문서를 전송합니다.

    당신은 단순히 거기에만에서 그것을 얻을 수 있도록 몽고는 callbackobject로 전체 문서를 전송합니다.

    예를 들면

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

    6.지금 당신은 insertOne 방법과 약속의 result.insertedId에서 사용할 수 있습니다

    지금 당신은 insertOne 방법과 약속의 result.insertedId에서 사용할 수 있습니다

  7. ==============================

    7.@JSideris, insertedId을 얻기를위한 샘플 코드입니다.

    @JSideris, insertedId을 얻기를위한 샘플 코드입니다.

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

    8.당신은 "_id"사용 simpley을하려는 경우

    당신은 "_id"사용 simpley을하려는 경우

    result.insertedId.toString() 
    

    // toString 16 진수로 변환합니다

  9. ==============================

    9.자동 데이터 객체를 조작하지 않고 _id 필드를 얻기 위해 비동기 기능을 사용할 수 있습니다 :

    자동 데이터 객체를 조작하지 않고 _id 필드를 얻기 위해 비동기 기능을 사용할 수 있습니다 :

    async function save() {
      const data = {
        name: "John"
      }
    
      await db.collection('users', data )
    
      return data
    }
    

    의 데이터를 반환합니다 :

    {
      _id: '5dbff150b407cc129ab571ca',
      name: 'John'
    }
    
  10. from https://stackoverflow.com/questions/14481521/get-the-id-of-inserted-document-in-mongo-database-in-nodejs by cc-by-sa and MIT license