web-dev-qa-db-ja.com

Mongooseで生のMongodb操作を行う方法

単体テストを作成するときに、テストデータベースを削除して初期化データを挿入し、テスト中にmongodbのデータを確認するため、これを求めています。だから私はmongodbに生の操作が必要です。

マングースでこれを行う方法は?今できることは、接続を作成するだけで、mongooseの公式サイトでドキュメントを見つけることはできません。

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

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

しかし、どのように:

  1. データベースを削除する
  2. コレクションを作成する
  3. コレクションにデータを書き込む
  4. コレクションを照会する
  5. コレクションをドロップする
59
Freewind

ドキュメントの「ドライバーアクセス」のセクションを参照してください。 http://mongoosejs.com/

基本的に、YourModel.collectionを実行することで node-mongodb-native ドライバーにアクセスでき、insertまたはremoveまたはdropまたは何でもできます。あなたが必要です。

ドキュメントはありませんが、このアプローチを使用すると、ここのすべてにアクセスできます: https://github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js

編集:

あなたの場合、テストスイートでmongooseの使用をスキップして、 node-mongodb-native を直接使用するか、実行可能な単純な mongodb Shell script を書くこともできますテスト開始前。

43
Jamund Ferguson

mongoose.connection.dbを使用して、ネイティブmongodbコマンドを実行できます。これはネイティブ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を使用して、そのデータベースに固有のすべてのコマンドを送信できます。

これはmongoose APIドキュメントです: http://mongoosejs.com/docs/api.html#connection_Connection-db

48
steampowered

これを使用して、mongooseでraw操作を実行します。

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

テスト後にDBをクリーンアップするために同じトラブルが発生し、実際の回答は「コードブロック」がないため混乱しているため、Dig docs/codeをもう一度、他の時間節約のためにこれを投稿します;)

MongooseコレクションはMongodbコレクションを拡張します

/ * *セクションcollection.js * http://mongoosejs.com/docs/api.html#collection-js * /

インターフェースCollectionBaseは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( Docs を参照)

5。コレクションをドロップ

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