programing

nodejs mongodb 네이티브 드라이버에서 문자열을 ObjectId로 변환하는 방법은 무엇입니까?

newstyles 2023. 5. 14. 10:28

nodejs mongodb 네이티브 드라이버에서 문자열을 ObjectId로 변환하는 방법은 무엇입니까?

나는 mongodb 네이티브 드라이버를 사용하고 있습니다.nodejs환경과 나는 변환이 필요합니다.id업데이트 쿼리에서 사용할 ObjectId에 대한 문자열입니다. 어떻게 해야 합니까?

ObjectId(nodejs 드라이버 문서) 포함

BSON ObjectId를 나타내는 문자열(예: 웹 요청에서 수신)이 있는 경우 ObjectId 인스턴스로 변환해야 합니다.

const {ObjectId} = require('mongodb'); // or ObjectID 
// or var ObjectId = require('mongodb').ObjectId if node version < 6

const updateStuff = (id, doc) => {
  // `ObjectId` can throw https://github.com/mongodb/js-bson/blob/0.5/lib/bson/objectid.js#L22-L51, it's better anyway to sanitize the string first
  if (!ObjectId.isValid(s)) {
    return Promise.reject(new TypeError(`Invalid id: ${id}`));
  }
  return collection.findOneAndUpdate(
    {_id: ObjectId(id)}, 
    {$set: doc}, 
    {returnOriginal: false}
  );
};
var {ObjectId} = require('mongodb'); // or ObjectID Not Working

@habbub이 언급한 것처럼 나에게는 통하지 않을 것입니다.

하지만 사용할 때var ObjectID = require('mongodb').ObjectID; // convert string to ObjectIDmongodb에서 nodejs mongodb 네이티브 드라이브에서 문자열을 ObjectId로 변환할 수 있습니다.

http://mongodb.github.io/node-mongodb-native/2.2/api/ObjectID.html 을 참조하십시오.

사용할 수 있습니다.$toObjectId집계 파이프라인에서 다음과 같은 것을 수행됩니다.

db.CollectionWithStringId.aggregate([
{$addFields: {
    _id: { $toObjectId: "$_id" }
}}

])

출처 : https://docs.mongodb.com/manual/reference/operator/aggregation/toObjectId/

my mongodb 버전: 4.9.1(nodejs)

다음을 수행해야 합니다.

import { Collection, ObjectId } from "mongodb";

그런 다음 예를 들어 문서를 삭제하면 다음과 같이 됩니다.

return await collection.deleteOne({ _id: new ObjectId(id)});

언급URL : https://stackoverflow.com/questions/21076460/how-to-convert-a-string-to-objectid-in-nodejs-mongodb-native-driver