MongoDB的CRUD

Create 创建Insert Methods — MongoDB Manualdb.集合.insertOne(<JSON对象>) // 添加单个文档db.集合.insertMany([{<JSON对象1>},{<JSON对象2>}]) // 批量添加文档db.集合.insert() // 添加单个文档insertOne, 和 insertMany命令不支持 explain命令insert支持 explain命令insertOne
摘要由CSDN通过智能技术生成

Create 创建

Insert Methods — MongoDB Manual

db.集合.insertOne(<JSON对象>)   // 添加单个文档
db.集合.insertMany([{<JSON对象1>},{<JSON对象2>}])   // 批量添加文档
db.集合.insert()   // 添加单个文档

insertOne, 和 insertMany命令不支持 explain命令

insert支持 explain命令

insertOne

db.collection.insertOne(
   <document>,
   {
      writeConcern: <document> // 安全级别 可选
   }
)

Write Concern — MongoDB Manual

writeConcern 定义了本次文档创建操作的安全写级别

简单来说, 安全写级别用来判断一次数据库写入操作是否成功,安全写级别越高,丢失数据的风险就越低,然而写入操作的延迟也可能更高。

writeConcern 决定一个写操作落到多少个节点上才算成功。 writeConcern的取值包括

0: 发起写操作,不关心是否成功

1- 集群中最大数据节点数: 写操作需要被复制到指定节点数才算成功

majority: 写操作需要被复制到大多数节点上才算成功

发起写操作的程序将阻塞到写操作到达指定的节点数为止

db.user.insertOne(
{
 name:"zhangsan",
 age:20,
 sex:"m"}
);

插入文档时,如果没有显示指定主键,MongoDB将默认创建一个主键,字段固定为_id,ObjectId() 可以快速生成的12字节id 作为主键,ObjectId 前四个字节代表了主键生成的时间,精确到秒。主键ID在客户端驱动生成,一定程度上代表了顺序性,但不保证顺序性, 可以通过ObjectId("id值").getTimestamp() 获取创建时间。

insertMany

db.collection.insertMany(
   [ <document 1> , <document 2>, ... ],
   {
      writeConcern: <document>,
      ordered: <boolean> // default true
   }
)

ordered: 觉得是否按顺序进行写入

顺序写入时,一旦遇到错误,便会退出,剩余的文档无论正确与否,都不会写入

乱序写入,则只要文档可以正确写入就会正确写入,不管前面的文档是否是错误的文档

if the collection does not exist, then insertMany() creates the collection on successful write.

MongoDB以集合(collection)的形式组织数据,collection 相当于关系型数据库中的表,如果collection不存在,当你对不存在的collection进行操作时,将会自动创建一个collection

db.inventory.insertMany([
   { item: "journal", qty: 25, status: "A", size: { h: 14, w: 21, uom: "cm" }, tags: [ "blank", "red" ] },
   { item: "notebook", qty: 50, status: "A", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank" ] },
   { item: "paper", qty: 10, status: "D", size: { h: 8.5, w: 11, uom: "in" }, tags: [ "red", "blank", "plain" ] },
   { item: "planner", qty: 0, status: "D", size: { h: 22.85, w: 30, uom: "cm" }, tags: [ "blank", "red" ] },
   { item: "postcard", qty: 45, status: "A", size: { h: 10, w: 15.25, uom: "cm" }, tags: [ "blue" ] }
]);

上述操作返回一个包含确认指示符的文档和一个包含每个成功插入文档的_id的数组

insert

db.collection.insert(
   <document or array of documents>,
   {
     writeConcern: <document>,
     ordered: <boolean>
   }
)
db.products.insert( { item: "card", qty: 15 } )
// 指定_id
db.products.insert( { _id: 10, item: "box", qty: 20 } )

db.products.insert(
   [
     { _id: 11, item: "pencil", qty: 50, type: "no.2" },
     { item: "pen", qty: 20 },
     { item: "eraser", qty: 25 }
   ]
 // , { writeConcern: { w: 2, wtimeout: 5000 } }
)

复合主键

db.demeDoc.insert(
{
  _id: {  product_name: 1,  product_type: 2},
	supplierId:" 001",
	create_Time: new Date()
}
)

注意复合主键,字段顺序换了,会当做不同的对象被创建,即使内容完全一致

READ 查询

db.collection.find({})  // 查询所有的文档
db.collection.find({}).pretty() // 返回格式化的文档
db.inventory.insertMany(
[
   { item: "journal", qty: 25, tags: ["blank", "red"], dim_cm: [ 14, 21 ], size: { h: 14, w: 21, uom: "cm" }, status: "A" },
   { item: "notebook", qty: 50, tags: ["red", "blank"], dim_cm: [ 14, 21 ], size: { h: 8.5, w: 11, uom: "in" }, status: "A" },
   { item: "paper", qty: 100, tags: ["red", "blank", "plain"], dim_cm: [ 14, 21 ], size: { h: 8.5, w: 11, uom: "in" }, status: "D" },
   { item: "planner", qty: 75, tags: ["blank", "red"], dim_cm: [ 22.85, 30 ], size: { h: 22.85, w: 30, uom: "cm" }, status: "D" },
   { item: "postcard", qty: 45, tags: ["blue"], dim_cm: [ 10, 15.25 ], size: { h: 10, w: 15.25, uom: "cm" }, status: "A" }
]
)

1. 精准等值查询

db.inventory.find( { status: "D" } )
// SELECT * FROM inventory WHERE status = "D"

2. 多条件查询

db.inventory.find( { qty: 0, status: "D" } );
// SELECT * FROM inventory WHERE status = "D" a
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值