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

Fre*_*ind 60 mongoose mongodb

我问这个是因为当我编写单元测试时,我想删除测试数据库并插入一些初始化数据,并在测试中检查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)

但是如何:

  1. 删除数据库
  2. 创建一个集合
  3. 将一些数据写入集合
  4. 查询集合
  5. 放一个集合

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脚本.

  • 这个答案指的是不太清楚的文档.为什么不将代码*和*链接写入文档中的特定页面. (3认同)
  • 我不再在该页面上看到"驾驶员访问". (3认同)

jit*_*put 8

使用它在猫鼬中运行原始操作。

  Model_name.collection.insertMany(array, { ordered: false },function(err, success){
            console.log(success);
        });
Run Code Online (Sandbox Code Playgroud)

  • 这个答案需要一个模型存在。该问题询问如何使用“原始 mongodb”,这意味着用户可能不想要模型的附加要求。 (4认同)