ProgramingTip

몽구스에서 원시 mongodb을 수행하는 방법은 무엇입니까?

bestdevel 2020. 12. 8. 19:21
반응형

몽구스에서 원시 mongodb을 수행하는 방법은 무엇입니까?


단위 테스트를 초기화 할 때 테스트 데이터베이스를 삭제하고 일부 초기화 데이터를 삽입하고 테스트에서 mongodb의 묻습니다. 그래서 mongodb에 대한 원시 작업이 필요합니다.

몽구스에서 어떻게할까요? 이제는 몽구스의 공식 사이트에서 문서를 만들지 않을 것입니다.

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

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

그러나 방법 :

  1. 데이터베이스 삭제
  2. 컬렉션 만들기
  3. 컬렉션에 데이터 쓰기
  4. 컬렉션 쿼리
  5. 컬렉션을 버리다

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

으로 당신은 기본적에 액세스 얻을 수있는 노드 MongoDB의 네이티브의 수행하여 드라이버를 YourModel.collection다음을 수행 할 수 있습니다 insert또는 remove또는 drop당신이 무엇을 필요로하거나.

문서는 없지만 접근 방식을 사용하면 https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js의 모든 항목에 액세스 할 수 있습니다.

편집하다 :

귀하의 경우에는 mongoose 사용을 건너 뛰고 node-mongodb-native를 직접 사용하거나 테스트 시작하기 전에 사용할 수 있는 간단한 mongodb 쉘 확장을 사용할 수도 있습니다.


을 사용하여 기본 NodeJS 드라이버를 사용하여 mongodb 명령을 수 있습니다 mongoose.connection.db. 이것은 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});
});

db 참조를 사용하여 해당 데이터베이스에있는 모든 명령을 보낼 수 있습니다 mongoose.connection.db.

이것은 mongoose API 문서입니다 : http://mongoosejs.com/docs/api.html#connection_Connection-db

중요 : NodeJS 드라이버의 일부 옵션은 셸 명령의 옵션과 MongoDB. 예를 들어, findOneAndUpdate()사용하는 returnOriginal대신 returnNewDocument. 이에 대한 자세한 내용은 여기여기참조 하십시오 .


몽구스에서 원시 작업을 실행 비용을 사용하십시오.

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

테스트 후 DB를 정리하기 위해 문서 동일한 문제가 발생하고 "코드 블록"이 없기 때문에 실제 상황이 혼란 스러웠습니다. / 코드를 더 많은 시간을 절약하기 위해 치십시오.

Mongoose 컬렉션은 Mongodb 컬렉션을 확장합니다.

/ * * 섹션 collection.js * http://mongoosejs.com/docs/api.html#collection-js * /

interface CollectionBase extends mongodb.Collection {

문서 : http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html

연결도 마찬가지입니다.

require ( 'mongoose')에 의해 노출 된 Connection 클래스는 실제로 드라이버의 NativeConnection 클래스입니다. connection.js는 기본 버전이 확장하는 기본 클래스를 정의합니다. 참조 : http://mongoosejs.com/docs/api.html#drivers-node-mongodb-native-connection-js

따라서 모든 "RAW"작업은 수집 / 연결에서 수행 할 수 있습니다.

 var connection = mongoose.connection;

그때:

1. 데이터베이스 삭제 :

connection.dropDatabase()

2. 컬렉션 만들기

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

3. 컬렉션에 데이터 쓰기

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

4. 컬렉션 쿼리

그것은 분명히 질문이 아닙니다 : findAll, find, aggregate, all allowed ( 문서 참조 )

5. 컬렉션 드롭

connection.collection('notsonewcollection').drop()

참고 URL : https://stackoverflow.com/questions/10519432/how-to-do-raw-mongodb-operations-in-mongoose

반응형