programing

mongoose를 사용하여 mongodb에 문서를 삽입하고 생성된 ID를 얻는 방법은 무엇입니까?

muds 2023. 5. 6. 16:44
반응형

mongoose를 사용하여 mongodb에 문서를 삽입하고 생성된 ID를 얻는 방법은 무엇입니까?

몽구스를 사용해서 몽구스를 수술하고 있습니다.이제 테스트를 위해 네이티브 연결을 통해 mongodb에 데이터를 삽입하고자 합니다.

그런데 문제는 삽입 후 생성된 id를 어떻게 얻을 수 있느냐는 것입니다.

노력했습니다.

var mongoose = require('mongoose');

mongoose.connect('mongo://localhost/shuzu_test');

var conn = mongoose.connection;

var user = {
    a: 'abc'
};

conn.collection('aaa').insert(user);

console.log('User:');
console.log(user);

하지만 인쇄는 다음과 같습니다.

{ a: 'abc' }

거기에는 없다_id들판.

생성할 수 있습니다._id직접 작성하여 데이터베이스로 전송합니다.

var ObjectID = require('mongodb').ObjectID;

var user = {
  a: 'abc',
  _id: new ObjectID()
};

conn.collection('aaa').insert(user);

이것은 제가 가장 좋아하는 MongoDB의 특징 중 하나입니다.서로 연결된 개체를 여러 개 만들어야 하는 경우 앱과 DB 간에 여러 번 왕복할 필요가 없습니다.앱에서 모든 ID를 생성한 후 모든 ID를 삽입할 수 있습니다.

.save를 사용하면 콜백 함수에 _id가 반환됩니다.

const User = require('../models/user.js');    

var user = new User({
  a: 'abc'
});

user.save(function (err, results) {
  console.log(results._id);
});

약속을 사용하고 싶은 경우:

const collection = conn.collection('aaa');
const instance = new collection({ a: 'abc' });
instance.save()
    .then(result => {
        console.log(result.id);  // this will be the new created ObjectId
    })
    .catch(...)

또는 Node.js >= 7.6.0을 사용하는 경우:

const collection = conn.collection('aaa');
const instance = new collection({ a: 'abc' });
try {
    const result = await instance.save();
    console.log(result.id);  // this will be the new created ObjectId
} catch(...)

upsert: true 옵션과 함께 업데이트 방법을 사용할 수 있습니다.

aaa.update({
    a : 'abc'
}, {
    a : 'abc'
}, {
    upsert: true
});

언급URL : https://stackoverflow.com/questions/10520501/how-to-insert-a-doc-into-mongodb-using-mongoose-and-get-the-generated-id

반응형