몽구스에서 원시 mongodb을 수행하는 방법은 무엇입니까?
단위 테스트를 초기화 할 때 테스트 데이터베이스를 삭제하고 일부 초기화 데이터를 삽입하고 테스트에서 mongodb의 묻습니다. 그래서 mongodb에 대한 원시 작업이 필요합니다.
몽구스에서 어떻게할까요? 이제는 몽구스의 공식 사이트에서 문서를 만들지 않을 것입니다.
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
// get the connection
var conn = mongoose.connection;
그러나 방법 :
- 데이터베이스 삭제
- 컬렉션 만들기
- 컬렉션에 데이터 쓰기
- 컬렉션 쿼리
- 컬렉션을 버리다
문서의 "드라이버 액세스"섹션을 참조하십시오. 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
'ProgramingTip' 카테고리의 다른 글
.jar 및 .dll 파일의 차이점 (0) | 2020.12.08 |
---|---|
CSS 너비 100 % 또는 최대 너비 (픽셀) (0) | 2020.12.08 |
1D 숫자 배열 클러스터링 (0) | 2020.12.08 |
인증을 위해 Jenkins의 그룹에 사용자를 만들고 추가하는 방법은 무엇입니까? (0) | 2020.12.08 |
타이밍 알고리즘 : C ++의 clock () 대 time () (0) | 2020.12.08 |