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