我问这个是因为当我编写单元测试时,我想删除测试数据库并插入一些初始化数据,并在测试中检查mongodb中的数据.所以我需要mongodb的原始操作.
如何在猫鼬中做到这一点?我现在能做的就是创建连接,而不是在mongoose的官方网站上找到任何文件.
var mongoose = require('mongoose');
mongoose.connect('mongo://localhost/shuzu_test');
// get the connection
var conn = mongoose.connection;
Run Code Online (Sandbox Code Playgroud)
但是如何:
ste*_*red 53
您可以使用运行本机mongodb命令mongoose.connection.db.这将访问本机MongoDB驱动程序,您无需创建模型.
mongoose.connection.db.collection('userCollection').insert({
username: 'captain1',
firstName: 'Steve',
lastName: 'Rogers',
});
Run Code Online (Sandbox Code Playgroud)
mongoose.connection.db.collection('userCollection').update(
{someFilterProperty: true},
{$set: {
siteId: new mongoose.mongo.ObjectId('56cb91bdc5946f14678934ba'),
hasNewSiteId: true}},
{multi: true});
});
Run Code Online (Sandbox Code Playgroud)
您可以使用数据库连接db引用发送特定于该数据库的每个命令mongoose.connection.db.
这是mongoose API doc:http: //mongoosejs.com/docs/api.html#connection_Connection-db
Jam*_*son 44
请参阅文档中的"驱动程序访问"部分:http: //mongoosejs.com/
基本上,您可以通过执行操作来访问node-mongodb-native驱动程序YourModel.collection,然后您可以insert或者remove或者根据drop需要访问它.
没有文档,但通过这种方法,您可以访问此处的所有内容:https: //github.com/mongodb/node-mongodb-native/blob/master/lib/mongodb/collection.js
编辑:
在您的情况下,您可能希望跳过在测试套件中使用mongoose并直接使用 node-mongodb-native,或者甚至编写一个可以在测试开始之前运行的简单mongodb shell脚本.
使用它在猫鼬中运行原始操作。
Model_name.collection.insertMany(array, { ordered: false },function(err, success){
console.log(success);
});
Run Code Online (Sandbox Code Playgroud)