MongoDB数据库操作

目录

一、连接到MongoDB

1、安装mongoDB包

2、建立MongoDB的连接 

二、添加MongoDB文档 

1、往集合中添加单个文档

2、往集合中添加多个文档

三、查询MongoDB文档

1、基本查询

        (1)基本查询示例

        (2)条件查询示例

2、使用查询操作符

        (1)查找出age大于30的文档

        (2)复杂的组合查询

3、返回指定的查询字段

4、查询结果排序

5、查询结果分页

        (1)使用limit选项限制返回的文档数

        (2)使用skip选项指定跳过的文档数

        (3)组合使用skip选项和limit选项可以实现查询结果分页

四、更改MongoDB文档

1、使用updateMany()方法来更改符合条件的文档

五、删除MongoDB文档

1、删除一个文档可使用deleteOne()方法

2、删除多个文档可以使用deleteMany()方法

六、为MongoDB集合创建索引

1、使用createIndex()方法创建索引

七、以“同步”方式编写MongoDB操作代码


一、连接到MongoDB

1、安装mongoDB包

  • 原生MongoDB驱动的包名为mongodb
  • 安装该包:cnpm install mongodb --save

2、建立MongoDB的连接 

const MongoClient = require('mongodb').MongoClient; //导入模块获取连接客户端
const url = 'mongodb://localhost:27017';   // 连接URL
const dbName = 'testmgdb';  // 数据库名称
MongoClient.connect(url, {useNewUrlParser: true}, function(err, client) {
  if (err) throw err;
  console.log("成功连接到MongoDB服务器");
  const db = client.db(dbName); //选择一个数据库
  client.close();   //关闭连接
});

二、添加MongoDB文档 

1、往集合中添加单个文档

const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';
const dbName = 'testmgdb';
//连接到MongoDB
MongoClient.connect(url, {useNewUrlParser: true},function(err, client) {
  if (err) throw err;
  const db = client.db(dbName);  //选择数据库
  const coll = db.collection('bookinfo'); // 选择一个集合(表)
//执行添加文档操作
  const myobj = { "isbn":"9787115474582","name":"Docker实践","author":"尹恩•米尔","press":"人民邮电出版社","price":79.00,"pubdate":"2018-02-01"};
  col.insertOne(myobj, function(err, res) {
    if (err) throw err;
    console.log("文档添加成功");
    console.log(res); //输出结果
    client.close();  //关闭连接
  });   
});

2、往集合中添加多个文档

const myobj = [{
    "isbn":"9787115428028",
    "name":"Python编程从入门到实践",
    "author":"袁国忠",
    "press":"人民邮电出版社",
    "price":"89.00",
    "pubdate":"2016-07-01"
}, 
{    
    "isbn":"9787115373557",
    "name":"数学之美(第二版)",
    "author":"吴军",
    "press":"人民邮电出版社",
    "price":"49.00",
    "pubdate":"2014-11-01"
}];
db.collection('bookinfo').insertMany(myobj, function(err, res) {
    if (err) throw err;
    console.log("插入的文档数为: " + res.insertedCount);
});

三、查询MongoDB文档

1、基本查询

        (1)基本查询示例

db.collection('bookinfo').find({}).toArray(function(err, docs) {
    if (err) throw err;
    console.log("找到下列记录:");
    console.log(docs);
    client.close();
  });

        (2)条件查询示例

 var filterStr = {"press": '人民邮电出版社'};  // 查询条件
  db.collection('bookinfo').find(filterStr).toArray(function(err, docs) {
    if (err) throw err;
    console.log("找到下列记录:");
    console.log(docs);
    client.close();
  }); 

2、使用查询操作符

        (1)查找出age大于30的文档

{ "age": { "$gt": 30 }}

        (2)复杂的组合查询

{ $and: [ { $or: [{a: 1}, {b: 1}] }, { $or: [{c: 1}, {d: 1}] } ]}

3、返回指定的查询字段

find({},{ projection:{'isbn':1,'name':1}})

4、查询结果排序

find({},{projection:{'isbn':1,'name':1},sort:{'isbn':-1}})

5、查询结果分页

        (1)使用limit选项限制返回的文档数

find({},{limit:2})

        (2)使用skip选项指定跳过的文档数

find({},{ skip:2 , limit:2 })

        (3)组合使用skip选项和limit选项可以实现查询结果分页

var pageSize = 5;          //每页数据条数
var currentPage = 2;       //当前页数
var skipNum = {currentPage -1} * pageSize;   //跳过条数
find({},{ skip: skipNum , limit: pageSize })

四、更改MongoDB文档

1、使用updateMany()方法来更改符合条件的文档

updateMany(filter, update, options, callback)

示例:

 var filterStr = { press: '人民邮电出版社'};  // 更改条件
  var updateStr = { $set  : { "url" : "http://www.ptress.com.cn" }};
  db.collection('bookinfo').updateMany(filterStr, updateStr,function(err, docs) {
    if (err) throw err;
    console.log("更改文档数为:"+ docs.result.nModified);
    client.close();
  }); 

五、删除MongoDB文档

1、删除一个文档可使用deleteOne()方法

2、删除多个文档可以使用deleteMany()方法

示例:

var filterStr = {"isbn":"9787301299487"};  // 删除条件
  db.collection('bookinfo').deleteMany(filterStr,function(err, docs) {
    if (err) throw err;
    console.log("删除文档数为:"+ docs.result.n);
    client.close();
  });   
});

六、为MongoDB集合创建索引

1、使用createIndex()方法创建索引

createIndex(fieldOrSpec, options, callback)

示例:

db.collection('bookinfo').createIndex({ "isbn": 1 }, null,function(err, results) {
    if (err) throw err;
    console.log(results);
    client.close();
  });   
});

七、以“同步”方式编写MongoDB操作代码

const MongoClient = require('mongodb').MongoClient;
const url = 'mongodb://localhost:27017';   // 连接URL   
const dbName = 'testmgdb';    // 数据库名称
const collName = 'bookinfo';    // 集合名称
async function getConnect() {   //声明建立连接的async函数
    try {
        let connect = await MongoClient.connect(url, {useNewUrlParser: true});
        return connect;
    } catch (err) {
        throw err;
    }
}
async function getBookInfo() {    //声明查询操作的async函数
    //“顺序”执行以下步骤
    let connect = await getConnect();  //执行建立连接的async函数
    let coll = connect.db(dbName).collection(collName);  //得到集合对象
    let result = await coll.find({}).toArray();  //查询文档
    connect.close();   //关闭连接
    return result;    //返回查询结果(这是Promise对象)
  }
getBookInfo().then(data => {   //执行查询操作async函数,并继续处理Promise对象
    console.log("查询的数据:", JSON.stringify(data, null, 4)); // 获取返回的内容   
}).catch(error => {
    console.log(error);   // 捕获错误
});

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值