MongoDB文档翻译-CRUD操作-插入文档

英文原文地址:https://docs.mongodb.com/v3.2/tutorial/insert-documents/
本文章属个人翻译,作个人学习之用,如有雷同,纯属巧合。如有错误之处,欢迎指正。

插入文档

插入方法

MongoDB提供了以下方法来插入文档到集合中。

  • db.collection.insertOne()
  • db.collection.insertMany()
  • db.collection.insert()

该篇文章提供了几个在mongo shell中插入文档的例子。

插入行为

创建集合

如果当时集合不存在,插入操作将创建该集合。

_id字段

在MongoDB中,存储在集合中的每个文档需要一个唯一的_id字段作为主键。如果插入的文档没有_id字段,MongoDB驱动自动给_id字段生成一个ObjectId

该行为也适用于通过带upset:true选项的更新操作来插入文档的情形。

原子

在单个文档的级别,MongoDB中所有的写操作都是原子的。欲知更多关于MongoDB和原子性的信息,见 原子与事务

db.collection.insertOne()

3.2版本新增

db.collection.insertOne()插入单个文档到集合中。

下面的例子插入一个新的文档到users集合中。新文档有3个字段,name、age和status。由于该文档未指定_id字段,MongoDB会给该文档添加一个具有ObjectId值的_id字段。见 插入行为

db.users.insertOne(
  {
      name: "sue",
      age:19,
      status: "P"
  }
)

insertOne()会返回一个文档,该文档含有所插入文档的_id字段。

要取回你刚刚插入的文档,查询该集合。

db.users.find({"name": "sue"})

欲知更多信息和例子,见 db.collection.insertOne()

db.collection.insertMany()

3.2版本新增

db.collection.insertMany()插入多个文档到集合中。

下面的例子插入3个文档到users集合中。每个文档有3个字段,name、age和status。由于文档未指定_id字段,MongoDB给每个文档增加一个具有ObjectId值的_id字段。见 插入行为

db.users.insertMany(
  [
      {name: "bob", age: 42, status: "A",},
      {name: "ahn", age: 22, status: "A",},
      {name: "xi", age: 34, status: "D",}
  ]
)

insertMany()会返回一个文档,该文档包含每个插入文档的_id字段。

要取回插入的文档,查询该集合

db.users.find()

欲知更多信息和例子,见 db.collection.insertMany()

db.collection.insert()

db.collection.insert()插入一个或多个文档到集合中。要插入单个文档,传递一个文档给该方法;要插入多个文档,传递一个文档数组给该方法。

以下例子插入一个文档到users集合。新文档有3个字段,name、age和status。由于该文档未指定_id字段,MongoDB给该文档添加一个具有ObjectId值的_id字段。见 插入行为

db.users.insert(
  {
          name: "sue",
          age: 19,
          status: "p"
  }
)

db.collection.insert()返回一个WriteResult对象,提供了状态信息。

例如,一个成功的插入操作返回以下WriteResult对象

WriteResult({ "nInserted" : 1 })

nInserted字段表示插入的文档数目。如果插入操作遇到错误,WriteResult对象将包含相应的错误信息。

下面的例子插入3个文档到users集合中。每个文档有3个字段,name、age和status。由于文档并未指定_id字段,MongoDB给每个文档增加一个具有ObjectId值的_id字段。见 插入行为

db.users.insert(
  [
      {name: "bob", age: 42, status: "A",},
      {name: "ahn", age: 22, status: "A",},
      {name: "xi", age: 34, status: "D",}
  ]
)

该方法返回一个包含操作状态的BulkWriteResult对象。成功的插入文档操作将返回以下BulkWriteResult对象:

BulkWriteResult({
      "writeErrors": [],
      "writeConcernErrors": [],
      "nInserted": 3,
      "nUPserted": 0,
      "nMatched": 0,
      "nModified": 0,
      "nRemoved": 0,
      "upserted": []
})

欲知更多信息和例子,见 db.collection.insert()

其他方法

以下方法也可以添加新文档到集合中:

  • db.collection.update(),当使用upsert: true选项时
  • db.collection.updateOne(),当使用upsert: true选项时
  • db.collection.updateMany(),当使用upsert: true选项时
  • db.collectionl.findAndModify(),当使用upsert: true选项时
  • db.collection.findOneAndUpdate(),当使用upsert: true选项时
  • db.collection.findOneAndReplace(),当使用upsert: true选项时
  • db.collection.save()
  • db.collection.bulkWrite()

欲知更多信息与例子,请查看相应方法各自的参考页面。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值