如何在猫鼬中进行生物操作?

之所以这样问是因为在编写单元测试时,我希望删除测试数据库并插入一些初始化数据,同时在测试中检查 mongodb 中的数据。所以我需要原始操作到蒙戈德。

如何在猫鼬中做到这一点?我现在能做的就是建立连接,在猫鼬的官方网站上找不到任何文档。

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


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

但如何:

  1. 删除数据库
  2. 创建一个集合
  3. 将一些数据写入集合
  4. 查询一个集合
  5. 放下收藏品
56705 次浏览

请参阅文档中关于“驱动程序访问”的部分: Http://mongoosejs.com/

基本上你可以通过做 YourModel.collection访问 Node-mongodb-本地驱动程序,然后你可以 insertremovedrop或任何你需要的。

没有医生,但用这种方法你可以看到这里的一切: Https://mongoosejs.com/docs/api.html#collection-js

编辑:

在您的情况下,您可能希望跳过在测试套件中使用猫鼬,而直接使用 Node-mongodb-本地,甚至编写一个简单的 Mongodb shell 脚本,它可以在测试开始之前运行。

通过使用 mongoose.connection.db,可以使用本机 NodeJS 驱动程序运行 mongodb 命令。这将访问 NodeJSMongoDB 驱动程序和 你不需要创造一个猫鼬模型

插入

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});
});

可以使用数据库连接 db 引用 mongoose.connection.db发送特定于该数据库的每个命令。

这是猫鼬 API 文档: http://mongoosejs.com/docs/api.html#connection_Connection-db

重点 : 注意 NodeJS 驱动程序中的一些选项与 MongoDB shell 命令中的选项不同。例如,findOneAndUpdate()使用 returnOriginal而不是 returnNewDocument。请参阅 给你给你了解更多信息。

用这个在猫鼬身上进行原始操作。

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

遇到了同样的麻烦,在测试之后清理 DBs,实际的答案只是因为缺少“代码块”而混淆,所以再次挖掘文档/代码,为了节省时间发布这个;)

Mongoose 集合扩展了 Mongodb 集合

/* * section 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

这种联系也是一样:

通过 request (‘ monose’)公开的 Connection 类 实际上是驱动程序的 NativeConnection 类。 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' } } },
]);

查询一个集合

这显然不是一个问题: findAll,find,total,all allow (参见 医生)

5. 放弃收藏

connection.collection('notsonewcollection').drop()
const mongoose = require('mongoose');
mongoose.connect(uri, options);
var db = mongoose.connection;
db.once('open', function () {
db.collection('collection').find().toArray(function(err, result){
console.log(result);
});
}

猫鼬对象有一个 mongo 原型,可以让您访问本地 mongo 驱动程序

mongoose.mongo