如何在mongoose中进行原始的mongodb操作?

我这样问,因为当我编写unit testing时,我想放弃testing数据库并插入一些初始化数据,并在testing中检查mongodb中的数据。 所以我需要原始的操作mongodb。

如何在mongoose中做到这一点? 我现在可以做的只是创build连接,而不是在mongoose的官方网站find任何文件。

var mongoose = require('mongoose'); mongoose.connect('mongo://localhost/shuzu_test'); // get the connection var conn = mongoose.connection; 

但如何:

  1. 删除数据库
  2. 创build一个集合
  3. 写一些数据到一个集合
  4. 查询集合
  5. 放下一个集合

请参阅文档“驱动程序访问”一节: http : //mongoosejs.com/

基本上,您可以通过执行YourModel.collection访问node-mongodb-native驱动程序,然后insertremovedrop任何您需要的东西。

没有文档,但通过这种方法,您可以访问以下所有内容: https : //github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js

编辑:

在你的情况下,你可能想要在testing套件中跳过使用mongoose,并直接使用node-mongodb-native ,甚至可以编写一个简单的mongodb shell脚本 ,这个脚本可以在testing开始之前运行。

您可以使用mongoose.connection.db运行本机mongodb命令。 这将访问本地MongoDB驱动程序,并且不需要创build模型

一个插入

 mongoose.connection.db.collection('userCollection').insert({ username: 'user1', firstName: 'Steve', lastName: 'LastName', }); 

更新

 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

用它来运行mongoose的原始操作。

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