MongoDB学习笔记二(插入、更新)
1、插入 runCommand
insert:后面写集合名称
ordered:可选,布尔值。如果true,则当插入文档失败时,返回而不插入inserts数组中列出的任何剩余文档。如果 false,则当插入一个文档失败时,继续插入剩余的文档。默认为true.
bypassDocumentValidation:可选,布尔值。启用insert在操作期间绕过文档验证。这使您可以插入不符合验证要求的文档。
插入单个文档
插入多个文档
若创建集合为:
尝试插入违反验证规则的文档:
返回结果报错。
若按以下输入:
则可操作成功。
2、插入数据
如果文档没有指定_id
字段,MongoDB 会将_id
带有 ObjectId 值的字段添加到新文档中。
在 MongoDB 中,存储在集合中的每个文档都需要一个唯一的 _id字段作为主键。如果插入的文档省略了该_id字段,MongoDB 驱动程序会自动为该字段生成一个ObjectId_id。
>>>插入一条数据 insertOne
若指定_id,如下:
>>>插入多条数据 insertMany
3、更新数据
>>>更新一条数据 updateOne
只更新第一条文档,如果匹配到了多个
执行后的结果:
更新操作:
使用$set运算符将字段的值更新为 ,将 size.uom字段的"cm"值更新status 为"P",
使用$currentDate运算符将字段的值更新为lastModified当前日期。如果 lastModified字段不存在, $currentDate将创建该字段。
示例:
①更新数组中的值
如:插入如下数据:
执行后:
执行如下更新:
定位的$运算符充当 更新查询文档的第一个匹配项的占位符。
执行结果:
若更新时未添加$占位符,则直接更新的是该字段值,如下:
②更新数组中的文档
如以下文档,更改数组:
如下更新:
执行结果:
将字段更新成数组:
db.collection.updateOne(
{"data_time":'2024-02-02'},
{$set:{"gpn":[
{"gpn": "组团1","freq": NumberInt("14275"),"amt":3366000},
{"gpn": "组团2","freq": NumberInt("16107"),"amt":17068000},
{"gpn": "组团3","freq": NumberInt("11765"),"amt":12776000},
{"gpn": "组团4","freq": NumberInt("9834"),"amt":15721000},
{"gpn": "组团5","freq": NumberInt("1950"),"amt":16742000},
{"gpn": "组团6","freq": NumberInt("12422"),"amt":7388000}
]
}}
)
③使用多个字段匹配更新嵌入式文档
这$运算符可以更新与运算符指定的多个查询条件匹配的第一个数组元素$elemMatch
原文档为:
执行:
等价于:
两个更新操作执行后,结果一致,为:
>>>更新多条数据 updateMany
匹配到的多个文档都会更新