MongoDB 增加

MongoDB 提供了以下用于将document插入到集合中的方法

Methodsexplain
db.collection.insertOne()将单个文档插入集合中。
db.collection.insertMany()将多个文档插入集合中。
db.collection.insert()将一个或多个文档插入到集合中。
db.collection.save().保存新文档而不指定_id 字段,保存指定_id 字段的新文档,替换现有文档

ObjectId

在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的_id字段,该字段充当primary key。如果插入的文档省略_id字段,则 MongoDB 驱动程序会自动为_id字段生成ObjectId(由“时间戳” 、“机器名”、“PID号”和“计数器”组成)。

  1. 时间戳(4个字节。从标准纪元开始,单位为秒)

    时间戳,与随后的5个字节(机器名+PID)组合起来,提供了秒级别的唯一性。由于时间戳在前,这意味着Objectld大致会按照插入的顺序排列,这对于某些方面很有用,如将其作为索引提高效率,但是这个是没有保证的。这4个字节也隐含了文档创建的时间。绝大多数驱动都会公开一个方法从Objectld获取这个信息。

  2. 机器名(3个字节)

    所在主机的唯一标识符。通常是机器主机名的散列值,机器名通过Md5加密后取前三个字节。

  3. PID(2个字节)

    为了确保在同一台机器上并发的多个进程产生的Objectld是唯一的,所以加上进程标识符(PID).注意到每次重启mongod进程后PID号通常会发生变化就可以了。前9字节保证了同一秒钟不同机器不同进程产生的Objectld是唯一的。

  4. 计数器(3个字节)

    表示的取值范围就是 256256256 = 16777216。一个自动增加的计数器,确保相同进程同一秒产生的 Objectld 也是不一样的同一秒钟最多允许每个进程拥有2563 (16 777 216) 不同的 Objectld。

insertOne

db.inventory.insertOne(
   { item: "canvas", qty: 100, tags: ["cotton"], size: { h: 28, w: 35.5, uom: "cm" } }
)

insertMany

db.inventory.insertMany([
   { item: "journal", qty: 25, tags: ["blank", "red"], size: { h: 14, w: 21, uom: "cm" } },
   { item: "mat", qty: 85, tags: ["gray"], size: { h: 27.9, w: 35.5, uom: "cm" } },
   { item: "mousepad", qty: 25, tags: ["gel", "blue"], size: { h: 19, w: 22.85, uom: "cm" } }
])

insert

db.products.insert( { item: "card", qty: 15 } ) 		//插入单个
db.products.insert(										//插入多个
   [
     { _id: 11, item: "pencil", qty: 50, type: "no.2" },
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
)

save

db.products.save( { item: "book", qty: 40 } )			//保存新文档而不指定_id 字段
db.products.save( { _id: 100, item: "water", qty: 30 } )//保存指定_id 字段的新文档
products集合包含以下文档:
{ "_id" : 100, "item" : "water", "qty" : 30 }
db.products.save( { _id : 100, item : "juice" } ) 		//替换现有文档
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值