source

노드에서 '_id'로 MongoDB 항목을 검색하는 올바른 방법

manycodes 2023. 5. 31. 17:41
반응형

노드에서 '_id'로 MongoDB 항목을 검색하는 올바른 방법

사용 중MongoDb(의 일부로)MongoJS)에서.Node다음은 MongoJS에 대한 문서입니다.

항목을 기준으로 노드 내에서 호출하려고 합니다._id필드. 바닐라 사용시MongoDB콘솔을 통해 다음 작업을 수행할 수 있습니다.

db.products.find({"_id":ObjectId("51d151c6b918a71d170000c7")})

그리고 그것은 내 입력을 정확하게 반환합니다.그러나 노드에서 동일한 작업을 수행할 때 다음과 같이 수행합니다.

db.products.find({"_id": ObjectId("51d151c6b918a71d170000c7")}, function (err, record) {
    // Do stuff
});

알겠습니다ReferenceError: ObjectId is not defined.

이를 위한 올바른 프로토콜은 무엇입니까?

ObjectId 기능을 사용하려면 먼저 다음과 같이 해야 합니다.

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

몽구스를 사용하는 경우 다음을 시도할 수 있습니다.

var mongoose = require('mongoose')
usersSchema = mongoose.model('users'),
mongoose.Types.ObjectId("<object_id>")

usersSchema.find({"_id": mongoose.Types.ObjectId("<object_id>")}, function (err, record) {
// Do stuff
});

MongoJS를 사용하는 경우 다음 작업을 수행할 수 있습니다.

var ObjectId = mongojs.ObjectId;

그리고나서,

db.users.find({"_id": ObjectId(id)}, function(err, user){...}

또한 ObjectId 및 MongoClient를 재구성하여 코드를 최적화하고 더 읽기 쉽게 만들 수 있습니다.

const { MongoClient, ObjectId } = require('mongodb');

mongoose를 사용할 때 objectId를 활용하는 또 다른 방법이 있습니다.

// at the top of the file
const Mongoose = require('mongoose')
const ObjectId = Mongoose.Types.ObjectId;

// when using mongo to collect data
Mongoose.model('users', userSchema).findOne({ _id: 
    ObjectId('xyz') }, function (err, user) {
        console.log(user)
        return handle(req, res)
    })
})

언급URL : https://stackoverflow.com/questions/17545311/correct-way-to-search-for-mongodb-entries-by-id-in-node

반응형