MongoDB Node.js 驱动:文档插入与更新操作详解

MongoDB Node.js 驱动:文档插入与更新操作详解

node-mongodb-native The Official MongoDB Node.js Driver node-mongodb-native 项目地址: https://gitcode.com/gh_mirrors/no/node-mongodb-native

MongoDB 是一个流行的 NoSQL 数据库,而 Node.js 驱动是与 MongoDB 交互的重要工具。本文将详细介绍如何使用 MongoDB Node.js 驱动进行文档的插入和更新操作。

文档插入操作

基本插入方法

使用 insert() 方法可以向集合中插入一个或多个文档:

collection.insert(docs[[, options], callback])

参数说明:

  • docs:可以是单个文档对象或文档数组
  • options:可选配置对象
  • callback:操作完成后的回调函数

示例代码:

var document = {name:"David", title:"About MongoDB"};
collection.insert(document, {w: 1}, function(err, records){
  console.log("Record added as "+records[0]._id);
});

插入注意事项

  1. 如果尝试插入已存在 _id 的文档,操作会报错:
collection.insert({_id:1}, {w:1}, function(err, doc){
  // 第一次插入成功
  collection.insert({_id:1}, {w:1}, function(err, doc){
    // 这里会报错,因为_id=1已存在
  });
});
  1. 批量插入可以通过传入文档数组实现

文档保存操作

save方法简介

save() 方法是插入和更新的快捷方式:

collection.save({_id:"abc", user:"David"},{w:1}, callback)

特点:

  • 如果设置了 _id 值:文档存在则更新,不存在则插入
  • 如果未设置 _id 值:总是作为新文档插入

回调函数参数:

  • 错误对象(如果有错误)
  • 插入时返回文档对象,更新时返回1

文档更新操作

基本更新方法

使用 update() 方法更新文档:

collection.update(criteria, update[[, options], callback]);

参数说明:

  • criteria:查询条件对象
  • update:更新内容对象
  • options:更新选项
  • callback:回调函数,接收三个参数(错误对象、修改数量、操作状态)

更新选项详解

更新操作支持以下选项:

| 选项名 | 说明 | 默认值 | |--------|------|--------| | multi | 是否更新所有匹配文档 | false | | upsert | 无匹配时是否插入新文档 | false | | raw | 是否返回BSON二进制Buffer | false |

更新操作类型

  1. 完全替换:直接提供新文档对象
collection.update({_id:"123"}, {author:"Jessica", title:"Mongo facts"});
  1. 部分更新:使用 $set 操作符
collection.update({_id:"123"}, {$set: {author:"Jessica"}});

其他常用更新操作符:

  • $inc:字段值增加
  • $push:向数组添加元素
  • $pull:从数组移除元素

查找并修改操作

findAndModify方法

findAndModify() 可以原子性地查找并修改单个文档:

collection.findAndModify(criteria[, sort[, update[, options]]], callback)

参数说明:

  • criteria:查询条件
  • sort:匹配多个文档时的排序方式
  • update:更新内容
  • options:操作选项
  • callback:回调函数,接收错误对象和更新后的文档

操作选项

| 选项名 | 说明 | 默认值 | |--------|------|--------| | remove | 是否删除找到的文档 | false | | new | 是否返回修改后的文档 | false | | upsert | 无匹配时是否插入 | false |

使用示例

db.collection('test').findAndModify(
  {hello: 'world'}, // 查询条件
  [['_id','asc']],  // 排序方式
  {$set: {hi: 'there'}}, // 更新操作
  {}, // 选项
  function(err, object) {
      if (err){
          console.warn(err.message);
      }else{
          console.dir(object);
      }
  });

最佳实践建议

  1. 批量操作:对于大量文档操作,考虑使用批量操作方法提高性能
  2. 错误处理:始终检查回调函数中的错误对象
  3. 写关注:根据业务需求合理设置写关注级别(w参数)
  4. 原子性:需要原子操作时使用findAndModify
  5. 性能优化:合理使用索引提高更新操作效率

通过掌握这些文档操作技巧,您可以更高效地使用MongoDB Node.js驱动进行数据管理。

node-mongodb-native The Official MongoDB Node.js Driver node-mongodb-native 项目地址: https://gitcode.com/gh_mirrors/no/node-mongodb-native

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭蔷意Ward

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值