복붙노트

[MONGODB] 어떻게 몽구스의 원시 MongoDB의 작업을 할까?

MONGODB

어떻게 몽구스의 원시 MongoDB의 작업을 할까?

내가 단위 테스트를 쓸 때, 나는 테스트 데이터베이스를 삭제하고 일부 초기화 데이터를 삽입하고, 또한 테스트에 MongoDB를의 데이터를 확인하고자하기 때문에 나는이 부탁 해요. 그래서 나는 MongoDB를 원시 작업이 필요합니다.

어떻게 몽구스에서이 작업을 수행하려면? 내가 지금 할 수있는 것은 단지 연결을 생성하고, 몽구스의 공식 사이트에있는 모든 문서를 찾을 수 없습니다.

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

 // get the connection
 var conn = mongoose.connection;

그러나 방법 :

해결법

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

    1.워드 프로세서에서 "드라이버 액세스"섹션을 참조하십시오 : http://mongoosejs.com/

    워드 프로세서에서 "드라이버 액세스"섹션을 참조하십시오 : http://mongoosejs.com/

    기본적으로 당신은 YourModel.collection를 수행하여 노드 MongoDB의 네이티브 드라이버에 액세스 할 수 있습니다 그리고 당신은 당신이 무엇을 필요가 삽입 또는 제거하거나 떨어 뜨리거나 할 수 있습니다.

    거기에 문서는 아니지만,이 방법으로 여기에있는 모든 액세스를 얻을 수 있습니다 : https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js

    편집하다:

    귀하의 경우에 당신은 당신의 테스트 스위트에 몽구스를 사용하여 건너 뛰고 직접 노드 MongoDB의 모국어를 사용, 또는 당신의 테스트를 시작하기 전에 실행 할 수있는 간단한 MongoDB의 쉘 스크립트를 작성 할 수 있습니다.

  2. ==============================

    2.당신은 mongoose.connection.db를 사용하여 기본 NodeJS 드라이버를 사용하여 MongoDB 명령을 실행할 수 있습니다. 이것은 NodeJS MongoDB의 드라이버를 액세스하고, 당신은 몽구스 모델을 만들 필요가 없습니다.

    당신은 mongoose.connection.db를 사용하여 기본 NodeJS 드라이버를 사용하여 MongoDB 명령을 실행할 수 있습니다. 이것은 NodeJS MongoDB의 드라이버를 액세스하고, 당신은 몽구스 모델을 만들 필요가 없습니다.

    mongoose.connection.db.collection('userCollection').insert({
      username: 'captain1',
      firstName: 'Steve',
      lastName: 'Rogers', 
    });
    
    mongoose.connection.db.collection('userCollection').update(
      {someFilterProperty: true},
      {$set: {
         siteId: new mongoose.mongo.ObjectId('56cb91bdc5946f14678934ba'),
         hasNewSiteId: true}},
      {multi: true});
    });
    

    당신은 데이터베이스 연결 데시벨 참조 mongoose.connection.db을 사용하여 해당 데이터베이스에 모든 명령의 특정을 보낼 수 있습니다.

    이 몽구스 API의 문서입니다 : http://mongoosejs.com/docs/api.html#connection_Connection-db

    중요 : NodeJS 드라이버의 옵션 중 일부는 MongoDB의 쉘 명령의 옵션 다릅니다 있습니다. 예를 들어 findOneAndUpdate는 () 대신 returnNewDocument의 returnOriginal을 이용한다. 이에 대한 자세한 내용은 여기와 여기를 참조하십시오.

  3. ==============================

    3.몽구스의 원시 작업을 실행하려면이 옵션을 사용합니다.

    몽구스의 원시 작업을 실행하려면이 옵션을 사용합니다.

      Model_name.collection.insertMany(array, { ordered: false },function(err, success){
                console.log(success);
            });
    
  4. ==============================

    4.그래서위한 목적이 게시물을 다른 시간 절약, 여러 번 문서 / 코드를 파고 테스트 후 정리 데시벨에, 같은 문제가 발생하고, 실제 대답은 오직 때문에 부재 "코드 블록"의 혼동 적이;)

    그래서위한 목적이 게시물을 다른 시간 절약, 여러 번 문서 / 코드를 파고 테스트 후 정리 데시벨에, 같은 문제가 발생하고, 실제 대답은 오직 때문에 부재 "코드 블록"의 혼동 적이;)

    몽구스 컬렉션 MongoDB의 수집을 확장

    같은 연결 간다 :

    모든 "RAW"작업을 수집 / 연결에서 수행 할 수 있도록, 당신이 가정

     var connection = mongoose.connection;
    

    그때:

    데이터베이스를 1.drop :

    connection.dropDatabase()
    

    컬렉션을 2.create

    connection.collection('newcollection') // creates if not exists
    

    컬렉션에 일부 데이터를 3.write

    connection.collection('mybenotnewcollection').bulkWrite([
      { insertOne: { whatewer: { you: 'need' } } },
    ]);
    

    4.query 모음

    그건 분명히 문제가 아니라입니다 : findall은가 집계 찾기, 모든 허용합니다 (문서 참조)

    컬렉션을 5.drop

    connection.collection('notsonewcollection').drop()
    
  5. from https://stackoverflow.com/questions/10519432/how-to-do-raw-mongodb-operations-in-mongoose by cc-by-sa and MIT license