使用Jenkins部署前端项目

您好,我是沧沧凉凉,是一名前端开发者,目前在掘金知乎以及个人博客上同步发表一些学习前端时遇到的趣事和知识,欢迎关注。


MongoDB特别适合储存一些爬虫爬取到的数据(JS的爬虫可以参考用JavaScript爬取豆瓣电影TOP250这篇文章)。

说到爬虫这里就多说一下,JS因为Node环境下具有非阻塞的特性,所以JS的爬虫性能是非常高的,而且操作简单,只要你会前端,那么你就会JS爬虫。

但是,爬虫往往不是越快越好,因为你爬取过快会被很多网站直接ban掉你的IP,而且在对爬取到的数据进行处理上,Python拥有神器pandas,如果不仅需要爬取数据,而且需要对数据进行一些处理,那么还是推荐使用Python进行爬取。

也就是说特别适合大数据分析的情况,因为它不像关系型数据库那样需要建表,MongoDB不需要建表,你只需要将数据扔给MongoDB,MongoDB自动就会将数据进行存储起来。

也就是说MongoDB是特别适合平时你写一些小应用,需要进行数据持久化存储的情况。首先只有在Node环境下才能操作数据库,在浏览器环境下是没有办法进行操作数据库的,所以本篇文章需要你对Node有一定的了解。

那么我们首先需要引入第三方库:

npm install mongodb

因为mongodb基本都是异步的,所以要么使用回调的形式,要么使用promise,但是无论是回调还是promise,阅读起来都比较困难,所以本文章的代码以async和await为主作为演示。

连接

const MongoClient = require("mongodb").MongoClient;
const url = "mongodb://localhost:27017";

async function dataOperating() {
  let conn = null;

  try {
    conn = await MongoClient.connect(url);
    // 获取testDB数据库下的test数据集
    const test = conn.db("testDB").collection("test");
  } catch (e) {
    console.log(e);
  } finally {
    // 关闭数据库连接
    if (conn != null) conn.close();
  }
}

dataOperating();

注意使用try,catch捕获错误,否则一旦报错程序直接就停止了,在没有数据库和数据集的情况下,通过上面的代码这样直接进行连接,只要你插入一条数据,那么就会自动创建数据库及数据集。

insertOne()插入单条数据

const obj = { name: "张三" };
const res = await test.insertOne(obj);
console.log(res);

返回数据为一个对象,其中acknowledged表示状态,insertedId为插入数据的id。

insertMany()插入多条数据

const obj = [{ name: "张三" }, { name: "李四" }, { name: "王五" }];
const res = await test.insertMany(obj);
console.log(res);
// 返回的数据
// {
//  acknowledged: true,
//  insertedCount: 3,
//  insertedIds: {
//    '0': new ObjectId("61434bb884be501398a7f197"),
//    '1': new ObjectId("61434bb884be501398a7f198"),
//    '2': new ObjectId("61434bb884be501398a7f199")
//  }
//}

其中insertedCount为插入数据的条数

deleteOne():删除一条数据,参数为指定条件,如果为空对象,则删除第一条数据。

const res = await test.deleteOne({});
console.log(res);

// { acknowledged: true, deletedCount: 1 }

deleteMany() :删除多条数据,参数为指定条件,如果为空对象,则删除所有数据。

const res = await test.deleteMany({});
console.log(res);

// { acknowledged: true, deletedCount: 7 }

返回值中deletedCount为删除数据的数量

删除集合

可以使用 drop() 方法来删除集合

const ok = await test.drop();
console.log(ok);

const whereStr = {"name":'菜鸟教程'};  // 查询条件
const updateStr = {$set: { "url" : "https://www.runoob.com" }};
site.updateOne(whereStr, updateStr).then((res) =>{
  console.log(res);
  db.close();
});

更新所有符合条的文档数据可以使用 **updateMany()**:

可以使用 find() 来查找数据, find() 可以返回匹配条件的所有数据。 如果未指定条件,find() 返回集合中的所有数据。

site.find({}).toArray().then(res=>{
  console.log(res);
  db.close()
})

findOne():查询一条数据,如果未指定条件,则查询第一条

site.findOne({}).then(res=>{
  console.log(res);
  db.close()
})

排序

sort() 方法,该方法接受一个参数,规定是升序(1)还是降序(-1)。

查询分页

要设置指定的返回条数可以使用 limit() 方法,该方法只接受一个参数,指定了返回的条数。

如果要指定跳过的条数,可以使用 skip() 方法。

最后

MongoDB使用起来是非常方便的,无论是做一些小项目还是存入爬虫爬取到的数据,几乎不用太多的学习,就能够实现MongoDB的CRUD,