クエリとしてのMongoDBのObjectIdのNode.jsの使用

ObjectIdでのMongoDBにデータを挿入するときに自動的に主キーとしてデータを生成しました。
それでは、どのよう経由のみクエリデータは、それをOBJECTIDのですか?

MongoDBの中に挿入データ

MongoDBの中に挿入データ構造:

{
  _id: 5d6a32389c825e24106624e4,
  title: 'GitHub 上有什么好玩的项目',
  content: '上个月有水友私信问我,GitHub 上有没有比较好玩的项目可以推荐?我跟他说:"有,过两天我整理一下"。\n' +
    '\n' +
    '然而,一个月过去了,我把这件事情忘了精光,直至他昨天提醒我才记起2_05.png。\n',
  creation: 2019-08-31T08:39:20.384Z
}

前記_id「5d6a32389c825e24106624e4」の値は、自動的にMongoDBを割り当てられます。

クエリとしてのMongoDBのObjectIdの使用

通知は、_id「5d6a32389c825e24106624e4」の値は、文字列ではなく、のObjectIdオブジェクトタイプ。したがって、次のクエリでは動作しません。

// 查询指定文档
const findNews = function (db, newsId, callback) {
    // 获取集合
    const news = db.collection('news');

    // 查询指定文档
    news.findOne({_id: newsId},function (err, result) {
        if (err) {
            console.error('error end: ' + err.stack);
            return;
        }
        
        console.log("查询指定文档,响应结果是:");
        console.log(result);
        callback(result);
    });
}

上記newsIdのObjectIdオブジェクト型に変換する必要があります。どのようにそれを行うには?以下のプラクティスを参照してください。

const ObjectId = require('mongodb').ObjectId;

// 查询指定文档
const findNews = function (db, newsId, callback) {
    // 获取集合
    const news = db.collection('news');

    // 查询指定文档
    news.findOne({_id: ObjectId(newsId)},function (err, result) {
        if (err) {
            console.error('error end: ' + err.stack);
            return;
        }
        
        console.log("查询指定文档,响应结果是:");
        console.log(result);
        callback(result);
    });
}

ここで、require('mongodb').ObjectIdのObjectIdクラスを取得するための文字列newsIdのObjectIdタイプに。

リファレンス

おすすめ

転載: yq.aliyun.com/articles/716673