몽구스에서 생몽고드비 수술은 어떻게 하나요?
유닛 테스트를 작성할 때 테스트 데이터베이스를 드롭하고 초기화 데이터를 삽입하고 테스트 시 mongodb에 있는 데이터를 확인하고 싶어서 물어봅니다.몽고드브에 대한 생작전이 필요해
몽구스에서 어떻게 하는 거야?제가 지금 할 수 있는 일은 연결을 만드는 것뿐이고, mongoose 공식 사이트에서 문서를 찾을 수 없습니다.
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
// get the connection
var conn = mongoose.connection;
단, 방법:
- 데이터베이스를 폐기하다
- 수집품을 만들다
- 수집품에 데이터를 쓰다
- 수집품을 문의하다.
- 모금을 포기하다.
native NodeJS 드라이버를 사용하여 mongodb 명령을 실행할 수 있습니다.mongoose.connection.db
. 노드에 액세스합니다.JS MongoDB 드라이버이므로 mongoose 모델을 만들 필요가 없습니다.
인서트
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
자세한 내용은 이쪽과 이쪽을 참조해 주세요.
문서내의 「드라이버 액세스」의 항을 참조해 주세요.http://mongoosejs.com/
기본적으로 다음과 같이 node-mongodb-native 드라이버에 액세스할 수 있습니다.YourModel.collection
그러면 당신은 할 수 있다insert
또는remove
또는drop
필요한 건 뭐든지요
문서는 없습니다만, 이 어프로치에서는, 다음의 모든 것에 액세스 할 수 있습니다.https://mongoosejs.com/docs/api.html#collection-js
편집:
이 경우 테스트 스위트에서 mongoose 사용을 건너뛰고 node-mongodb-native를 직접 사용하거나 테스트 시작 전에 실행할 수 있는 간단한 mongodb 셸 스크립트를 작성할 수도 있습니다.
mongoose에서 원시 작업을 실행할 때 사용합니다.
Model_name.collection.insertMany(array, { ordered: false },function(err, success){
console.log(success);
});
테스트 후 DB를 청소하는 등 동일한 문제가 발생하였고, 실제 답변은 "코드 블록"이 없기 때문에 혼란스러울 뿐이므로 다른 사용자의 시간을 절약하기 위해 문서/코드를 한 번 더 파헤쳐 주십시오.
Mongoose 컬렉션은 Mongodb 컬렉션을 확장합니다.
/* * section collection.http * http://mongoosejs.com/docs/api.html#collection-js * /
인터페이스 CollectionBase는 mongodb를 확장합니다.컬렉션 {
문서: http://mongodb.github.io/node-mongodb-native/2.1/api/Collection.html
접속도 마찬가지입니다.
require('mongoose')에 의해 표시되는 Connection 클래스는 실제로 드라이버의 NativeConnection 클래스입니다.connection.blass는 네이티브버전이 확장되는 기본 클래스를 정의합니다.참조: 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 all all all all all all all allowed (문서 참조)
5. 컬렉션을 드롭하다
connection.collection('notsonewcollection').drop()
const mongoose = require('mongoose');
mongoose.connect(uri, options);
var db = mongoose.connection;
db.once('open', function () {
db.collection('collection').find().toArray(function(err, result){
console.log(result);
});
}
mongoose 오브젝트는 네이티브 mongo 드라이버에 접근할 수 있는 mongo 프로토타입을 가지고 있습니다.
mongoose.mongo
언급URL : https://stackoverflow.com/questions/10519432/how-to-do-raw-mongodb-operations-in-mongoose
'prosource' 카테고리의 다른 글
서비스에 주석을 달아 @Retention, @Transactional, @Inherited로 테스트한 후 테스트 NG 유닛 테스트가 작동하지 않음 (0) | 2023.02.22 |
---|---|
React의 .js, .tsx 및 .jsx의 차이점은 무엇입니까? (0) | 2023.02.22 |
ORA-01950: 테이블스페이스 'USER' 권한 없음 (0) | 2023.02.22 |
ASP.NET Core API가 목록의 첫 번째 결과만 반환합니다. (0) | 2023.02.22 |
JSON.stringify가 객체의 내용 대신 [객체]를 반환합니다. (0) | 2023.02.22 |