복붙노트

[MONGODB] Node.js를 - 몽구스 - 점검 모음이있는 경우

MONGODB

Node.js를 - 몽구스 - 점검 모음이있는 경우

나는 몽구스를 사용하여 일부 데이터를 삽입 할 필요가 있지만 내가 먼저 컬렉션이 존재하는지 확인해야하므로 컬렉션의 이름은, 삽입의 순간에 사용자가 제공된다.

나는 모음이 존재하는지 확인하는 방법을 알고있는 방법은 system.namespaces 수집을 조회하는 것입니다. 나는 그 일을 3 개 가능한 방법을 볼 수 있습니다.

숫자 3은 가장 우아하고 난 피하기 위해 노력하고있어 하나, 나는 드라이버의 다른 인스턴스를로드하거나 몽구스가 이미 하나를 만들 때 새 연결을 만들 싶지 않아요.

나는이 글을 쓰는 한 후 1 번을 시도 할거야. 난 그냥 매우 간단 system.namespaces 및 스키마 모습을 확인

나는 아직도 몇 가지 의견을 듣고 싶습니다.

감사!

해결법

  1. ==============================

    1.옵션 2는 아마 가장 깨끗한입니다. 당신이 mongoose.createConnection을 사용하여 열 됐어요 몽구스 연결 개체 이름 CONN를 가정하면, 당신은 conn.db.를 통해 네이티브 몽고에게 DB 개체에 액세스 할 수 있습니다 당신이 collectionNames이 호출 할 수 있습니다에서 이는 당신이 찾고있는 무엇을 제공해야한다 :

    옵션 2는 아마 가장 깨끗한입니다. 당신이 mongoose.createConnection을 사용하여 열 됐어요 몽구스 연결 개체 이름 CONN를 가정하면, 당신은 conn.db.를 통해 네이티브 몽고에게 DB 개체에 액세스 할 수 있습니다 당신이 collectionNames이 호출 할 수 있습니다에서 이는 당신이 찾고있는 무엇을 제공해야한다 :

    conn.db.collectionNames(function (err, names) {
        // names contains an array of objects that contain the collection names
    });
    

    당신은 또한 당신이 찾고있는 무슨에 결과를 필터링 할 수 collectionNames에 매개 변수로서] 렉션 이름을 전달할 수 있습니다.

    몽구스 4.x의 업데이트

    필터를 허용하고 당신이로 할 것 있도록 커서를 반환 몽구스 4.x의 사용은, collectionNames이 listCollections로 대체되었다는 MongoDB를 기본 드라이버의 2.X 버전에서 :

    mongoose.connection.db.listCollections({name: 'mycollectionname'})
        .next(function(err, collinfo) {
            if (collinfo) {
                // The collection exists
            }
        });
    
  2. ==============================

    2.이 날 (몽구스 버전 5.1.1) 작동 :

    이 날 (몽구스 버전 5.1.1) 작동 :

    const mongoose = require('mongoose');
    const mongoURI = 'mongodb://localhost:27017/mydb'
    // notice the mongoose.createConnection instead of mongoose.connect
    const conn = mongoose.createConnection(mongoURI);
    conn.on('open', function () {
        conn.db.listCollections().toArray(function (err, collectionNames) {
          if (err) {
            console.log(err);
            return;
          }
            console.log(collectionNames);
            conn.close();
        });
    });
    
  3. ==============================

    3.모음의 목록에 수집 찾기

    모음의 목록에 수집 찾기

    public function CollectionExists($collectionName)
        {
            $mongo = new Mongo();
            $collectionArr = $mongo->selectDB('yourrec')->listCollections();
            if (in_array($collectionName, $collectionArr)) {
                return true;
            }
            return false;
        }
    
  4. from https://stackoverflow.com/questions/13444876/node-js-mongoose-check-if-a-collection-exists by cc-by-sa and MIT license