如何在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;
但如何:
- 删除数据库
- 创build一个集合
- 写一些数据到一个集合
- 查询集合
- 放下一个集合
请参阅文档“驱动程序访问”一节: http : //mongoosejs.com/
基本上,您可以通过执行YourModel.collection
访问node-mongodb-native驱动程序,然后insert
, remove
或drop
任何您需要的东西。
没有文档,但通过这种方法,您可以访问以下所有内容: 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); });