MongoDB自学笔记12---4.4 更新文档

2023-05-16

4.4 更新文档

Mongodb的增删查都已经学完了,只剩下更新了。在mongodb中提供了update()和save()方法用于更新一个文档,update()是使用最多的,save()在前面4.1插入文档的时候已经介绍了,这里就不再介绍了。

update语法如下:

db.collection.update(criteria,objNew,upsert,multi) 

参数说明:

criteria:设置查询条件,用于查询哪些文档需要被更新.

objNew:更新后的对象

upsert:设置为真的时候如果记录已经存在,更新它,否则新增一个记录,默认为false

multi:设置为真的时候,将会更新所有符合查询条件的文档。在mongodb中默认情况下只会更新第一条符合的文档。此方法必须与某些$开头的方法配合使用。

> db.user.find() 

{ "_id" : 1, "name" : "user1","age" : 1 } 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

>db.user.update({name:"user1"},{name:"user11"}) -->我们可以省略后两个参数 

> db.user.find() 

{ "_id" : 1, "name" : "user11" } 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

我们本想将user1改为user11,其他不变,但是我们看查询结果,mongodb将我们的整个文档更新了.所以我们如果要是使用上面那样的方式,更新文档,将会更新整个文档.这点需要注意.那么我们怎样才能只将user1,更新为user11呢?我们只要使用mongodb的$set方法即可,在后面我会讲解.

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

{ "_id" : 1, "name" : "user1","age" : 1 } 

{ "_id" : 7, "name" : "user1","age" : 7 } 

{ "_id" : 8, "name" : "user1","age" : 8 } 

> db.user.update({name:"user1"},{name:"user11"},1,0)/*只会更新一条数据,但是如果在这里我们直接将最后一个参数改为1,将会报错,因为这个参数需要与$方法联合使用  */

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

{ "_id" : 1, "name" : "user11" } 

{ "_id" : 7, "name" : "user1","age" : 7 } 

{"_id":8,"name":"user1","age":8}                                                   >db.user.update({name:"user111"},{name:"user111"},1,0)/*这时候我们更新name为user111的文档,但是没有,我们的第三个参数设置为了true,所以这时候将会插入一条新的文档,结果如下面一样  */

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

{ "_id" : 1, "name" : "user11" } 

{ "_id" : 7, "name" : "user1","age" : 7 } 

{ "_id" : 8, "name" : "user1","age" : 8 } 

{ "_id" : ObjectId("519a2c8259827a002f7e5ace"),"name" : "user111" } 

显示一下第四个参数:

>db.user.update({name:"user1"},{$set:{name:"userNew"}},0,1) 

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 }  

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

{ "_id" : 1, "name" : "user11" } 

{ "_id" : 7, "age" : 7, "name" :"userNew" } 

{ "_id" : 8, "age" : 8, "name" :"userNew" } 

{ "_id" : ObjectId("519a2c8259827a002f7e5ace"),"name" : "user111" } 

这里我们使用$set,这个就是只是去修改文档中某些值,而不是更新整个文档。

4.4.1 更新方法

         在mongodb中提供了很多与更新操作有关的方法,我们也可以叫它更新操作符。这些操作符主要可以分为两类:字段和数组。

字段组的主要包括:$inc、$rename、$setOnInsert、$set、$unset。

数组组的主要包括:$addToSet、$pop、$pullAll、$pull、$pushAll、$push、$each、$slice、$sort。

下面我们详细的介绍一下。

$inc

语法:db.collection.update({ field: value }, { $inc: { field1: amount } } );

为一个字段添加加上一个值,这个方法只能对数字操作,也就是说只能给数字加上一个值,当然这个值可以是负数。

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 2 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

> db.user.update({name:"user2"},{$inc:{age:10}}) /*将name为user2的年龄age加上10 */

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 12 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 6 } 

> db.user.update({name:"user6"},{$inc:{age:-4}}) /*将name为user6的年龄age加上-4,也就是减去4*/

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 12 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

$set

语法:db.collection.update({ field: value1 }, { $set: { field1: value2 } } );

当文档中包含该字段的时候,更新该字段值为value2,如果该文档中没有该字段,则为本文档添加一个字段file1,并为其赋值给value2

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 12 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

> db.user.update({name:"user2"},{$set:{age:20}}) /*将name为user2的age设置为20 */

> db.user.find() 

{ "_id" : 2, "name" : "user2","age" : 20 } 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

> db.user.update({name:"user2"},{$set:{sex:"nan"}})/*将name为user2的sex设置为nan,但是没有该字段,所以为该文档添加sex字段并赋值为nan */

> db.user.find() 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

{ "_id" : 2, "age" : 20, "name" :"user2", "sex" : "nan" } 

$unset

         语法:db.collection.update({ field: value1 }, { $unset: { field1: <arg> } } );

         参数arg可以使用true或者空字符串””,这样都会删除一个字段。

> db.user.find() 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

{ "_id" : 2, "age" : 20, "name" :"user2", "sex" : "nan" } 

> db.user.update({name:"user2"},{$unset:{sex:1}}) /*删除name为user2的sex字段.如果删除一个不存在的字段,并不会报错,没有什么效果  */

> db.user.find() 

{ "_id" : 3, "name" : "user3","age" : 3 } 

{ "_id" : 4, "name" : "user4","age" : 4 } 

{ "_id" : 5, "name" : "user5","age" : 5 } 

{ "_id" : 6, "name" : "user6","age" : 2 } 

{ "_id" : 2, "age" : 20, "name" :"user2" } 

$rename

语法:{$rename: { <old name1>: <newname1>, <old name2>: <new name2>, ... } }

为文档中的一个或者多个字段改名。

> db.test.find() 

{ "_id" : 1, "ary" : [ 3, 4, 5, [ 6, 7 ], 9 ]} 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

> db.test.update({_id:1},{$rename:{ary:"aryNew"}}) 

> db.test.find() 

{ "_id" : 1, "aryNew" : [ 3, 4, 5, [ 6, 7 ], 9 ]} 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

$setOnInsert

语法:db.collection.update(<query>,

                      { $setOnInsert:{ <field1>: <value1>, ... } },

                      {upsert: true }

                    )

$setOnInsert只有在upsert设置为true,并且被更新的文档不存在此集合中,需要插入一个新的文档的时候才起作用。在插入的时候会为新插入的文档添加给定的字段。

>db.user.update({name:"user1"},{_id:1,name:"user1"},1)

> db.user.find()

{ "_id" : 1, "name" : "user1" }

>db.user.update({name:"user2"},{$setOnInsert:{name:"user2",age:2}},1)

> db.user.find()

{ "_id" : 1, "name" : "user1" }

{ "_id" : ObjectId("51a02848d02692fff25c4238"),"age" : 2, "name" : "user2" }

> db.user.update({name:"user2"},{$setOnInsert:{name:"user3",age:3}},1)

> db.user.find()

{ "_id" : 1, "name" : "user1" }

{ "_id" : ObjectId("51a02848d02692fff25c4238"),"age" : 2, "name" : "user2" }

这个方法是在mongodb2.4中新加入的,具体在什么情况下使用,还不是很清楚。

$push

语法:db.collection.update(<query>,

                      { $push:{ <field>: <value> } }

                   )

将一个数字存入一个数组,分为三种情况,如果该字段存在,则直接将数字存入数组.如果该字段不存在,创建字段并且将数字插入该数组.如果更新的字段不是数组,会报错的.

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4 ] } 

{ "_id" : 2, "text" : "test" } 

> db.test.update({_id:1},{$push:{ary:5}}) -->数组存在 直接存入 

> db.test.find() 

{ "_id" : 2, "text" : "test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5 ] } 

> db.test.update({_id:2},{$push:{ary:6}}) -->数组不村子,创建数组并存入 

> db.test.find() 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5 ] } 

> db.test.update({_id:2},{$push:{text:6}})  -->更新字段存在但不是数组报错 

Cannot apply $push/$pushAll modifier to non-array 

如果我们想将多个值一起压入我们可能会将一个数组直接存入,但是这样是不对的,$push一次只会存入一个字段,代码如下:

> db.test.update({_id:1},{$push:{ary:[6,7]}}) 

> db.test.find() 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ] ]}

实现上面的功能我们可以使用下面的$pushAll。

$pushAll

语法:db.collection.update({ field: value }, { $pushAll: { field1: [ value1, value2, value3 ] } } );

将多个数值一次存入数组.

> db.test.find() 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ] ]}

> db.test.update({_id:1},{$pushAll:{ary:[8,9]}}) 

> db.test.find() 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

$addToSet

语法:db.collection.update( { field: value }, {$addToSet: { field: value1 } } );

与$push功能相同讲一个数字存入数组,不同的是如果数组中有这个数字,将不会插入,只会插入新的数据,同样也会有三种情况,与$push相同.

> db.test.find() 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

> db.test.update({_id:2},{$addToSet:{ary:7}}) -->ary中没有7,插入成功 

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

{ "_id" : 2, "ary" : [ 6, 7 ], "text": "test" } 

> db.test.update({_id:2},{$addToSet:{ary:7}})  -->ary中有7,插入失败  

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

{ "_id" : 2, "ary" : [ 6, 7 ], "text": "test" } 

$pop

语法:db.collection.update( {field: value }, { $pop:{ field:,<arg> } } )

删除数组最后一个或者第一个元素。如果参数arg设置为1,删除最后一个元素,如果设置为-1,则删除第一个元素。

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

{ "_id" : 2, "ary" : [ 6, 7 ], "text": "test" } 

> db.test.update({_id:2},{$pop:{ary:1}}) 

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

$pull

语法:db.collection.update( { field: <query> },{ $pull: { field: <query> } } );

删除数组中的一个元素,如果删除的字段不是数组,会报错

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],8, 9 ] } 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

> db.test.update({_id:1},{$pull:{ary:8}}) 

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],9 ] } 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

$pullAll

语法:db.collection.update( { field: value }, {$pushAll: { field1: [ value1, value2, value3 ] } } );

删除数组中的多个值,跟pushAll与push的关系类似.

> db.test.find() 

{ "_id" : 1, "ary" : [ 1, 2, 3, 4, 5, [ 6, 7 ],9 ] } 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

> db.test.update({_id:1},{$pullAll:{ary:[1,2,8]}}) 

> db.test.find() 

{ "_id" : 1, "ary" : [ 3, 4, 5, [ 6, 7 ], 9 ]} 

{ "_id" : 2, "ary" : [ 6 ], "text" :"test" } 

$each

         $each只能和$addToSet或者$push结合使用,将多个值一次存入数组。

         语法如下:

结合$addToSet:

db.collection.update( <query>,

                      {

                       $addToSet: { <field>: { $each: [ <value1>, <value2>... ] } }

                      }

                    )

结合$push:

db.collection.update( <query>,

                      {

                        $push:{ <field>: { $each: [ <value1>, <value2> ... ] } }

                      }

                    )

结合$addToSet使用的一段例子代码如下:

> db.c5.find()

{ "_id" : 1, "ary" : [ 1 ] }

> db.c5.update({_id:1},{$addToSet:{ary:{$each:[1,2,3,4]}}})

> db.c5.find()

{ "_id" : 1, "ary" : [ 1, 2, 3, 4 ] }

$slice

         语法:db.collection.update(<query>,

                      { $push: {

                                 <field>: {

                                           $each: [ <value1>, <value2>, ... ],

                                           $slice: <num>

                                          }

                               }

                      }

                    )

$slice需要和$push结合使用,截取一定长度的数组。参数num是小于或者等于0的数。如果num等于0表示的是返回的是一个空数组,如果是负数表示从后向前截取负数绝对值长度的数组。具体看下面代码:

> db.c5.find()

{ "_id" : 1, "ary" : [ 2, 3 ] }

> db.c5.update({_id:1},{$push:{ary:{$each:[1,2,3],$slice:-0}}})

> db.c5.find()

{ "_id" : 1, "ary" : [ ] }

> db.c5.update({_id:1},{$push:{ary:{$each:[1,2,3],$slice:-2}}})

> db.c5.find()

{ "_id" : 1, "ary" : [ 2, 3 ] }

$sort

语法:db.collection.update(<query>,

                      { $push:{

                                 <field>: {

                                           $each: [ <document1>,

                                                    <document2>,

                                                    ...

                                                  ],

                                           $slice: <num>,

                                           $sort: <sort document>,

                                          }

                              }

                      }

                    )

$sort将数组中的元素按照一定的规则进行排序,同样1表示正序,-1表示倒序。

$sort必须与$push、$each结合使用,并且$each值的数组中的元素都必须为对象。

> db.c5.find()

{ "_id" : 1, "ary" : [ ] }

>db.c5.update({_id:1},{$push:{ary:{$each:[{_id:1,score:3},{_id:2,score:5},{_id:3,score:1}],$slice:-5,$sort:{score:-1}}}})

> db.c5.find()

{ "_id" : 1, "ary" : [ { "_id" : 2,"score" : 5 }, {"_id" : 1, "score" : 3 }, {"_id" : 3, "score" : 1 } ] }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

MongoDB自学笔记12---4.4 更新文档 的相关文章

  • mongodb 备份是自动进行的吗?

    我们使用两个 mongodb 服务 现在 swisscom 开发者控制台中有一个备份按钮 我们是否必须使用此按钮手动进行备份 还是自动进行进一步备份 如果是 何时以及多久一次 我们会自动进行备份 但仅用于灾难恢复 我们不向客户提供此备份 所
  • 当前文档字段值内的地理空间 $near

    采取这个查询 location near x y maxDistance this field 我想将当前评估文档中指定字段的值分配给 maxDistance 那可能吗 是的 这是可能的 你只需使用 geoNear https docs m
  • 使用mongodb+srv配置Mongo

    我在 docker 上启动 mongo 所以默认主机 localhost port 27017 用户名 root密码 example 现在我想通过连接字符串进行连接 mongodb srv root example localhost si
  • Mongodb 中的读自己写的一致性

    首先 这是Pymongo 文档 http api mongodb org python current examples requests html highlight read 20you 20own 20write 默认情况下 当线程首
  • mongoDB 中的游标隔离

    首先请原谅我问了一个愚蠢的问题 但我是 mongodb 和学习游标的新手 我有一个问题 为什么我们需要游标隔离 手册说 如果文档发生更改 对文档的干预写入操作可能会导致游标多次返回该文档 我无法理解这一点 如果有人可以提供更多说明或举一些例
  • 使用 sidekiq 只执行众多重复作业之一?

    我有一个后台作业 在 MongoDB 上执行映射 归约作业 当用户向文档发送更多数据时 它会启动在文档上运行的后台作业 如果用户发送多个请求 它将启动同一文档的多个后台作业 但实际上只有一个需要运行 有没有办法可以防止多个重复实例 我正在考
  • Mongoose 使用 GeoJSON 点作为查询参数调用 geoNear 不起作用

    给定一个为包含 GeoJSON 位置的文档定义的模式 var BranchSchema new Schema location type type String required true enum Point LineString Pol
  • 更新 Meteor 中的嵌套数组

    这是我的架构 id FJwSEMdDriddXLKXh name t number 5 owners id 1 name Name address Address type Type gender Gender notes 单击后 我将在所
  • MongoDB 使用 $sort、$skip 和 $limit 返回错误的行

    这是我正在使用的功能 MyModel aggregate match query sort createdAt 1 skip skip limit 10 allowDiskUse true query是过滤行 skip是基于分页的动态值 即
  • Express js 错误:“express 已弃用 res.sendfile:请改用 res.sendFile”

    设置路径的正确方法是什么 在我的应用程序中 我使用此代码设置发送文件的路径 app get function req res get put post delete res sendfile dirname client views ind
  • MongoDB 查询返回空数组

    有一个基本的 Express 应用程序连接到几乎 0 5 GB 的 MongoDB 数据库 当我运行时 router get function req res next medical data find State CT function
  • MongoDB C# 驱动程序“找不到光标”

    我有一个相当密集的操作MongoCursor循环运行几个小时 在通过 c 驱动程序运行的 vb net 应用程序上 我不太确定是什么导致了它 但一段时间后我遇到了异常 Cursor not found 这可能是由于游标超时造成的 有什么办法
  • Inno Setup安装先决条件[重复]

    这个问题在这里已经有答案了 我正在通过 Inno Setup 创建一个安装程序 我看到很多关于如何检测先决条件是否存在的代码示例 但没有任何关于当我找不到先决条件时如何实际安装先决条件的代码示例 我确信它非常简单 但是我该如何安装先决条件呢
  • 如何使用 node.js / mongodb 在 HTML 中显示任意、无模式数据

    我使用 mongodb 将应用程序错误日志存储为 json 文档 我希望能够将错误日志格式化为 HTML 而不是将纯 json 返回到浏览器 日志是完全无模式的 它们可以随时更改 因此尝试执行此操作 在 Jade 中 是没有用的 var i
  • 我可以要求在 mongodb 集合中设置属性吗? (不为空)

    我可以在 mongodb 中定义一个需要设置某些属性的模式吗 很像NOT NULL在 SQL 中 如果可以的话 这个的语法是什么 我正在使用 Node js 和猫鼬 猫鼬 v3 6 15 MongoDB v2 4 5 EditCharles
  • MongoDB $orderby 和 Sort 之间的区别

    我想获取最新的文档 这显然是一个文档 因此findOne应该可以正常工作 但findOne这里返回插入的第一个文档 所以我现在有两个选择要么使用 orderBy with findOne or use sort 功能与 limit in f
  • CoreMongooseArray 到普通数组

    我正在从一个架构中选出 2 个元素 并希望在另一个架构中进行更新 为此 我使用切片方法将数组中的前 2 个元素列入候选名单 但我越来越 CoreMongooseArray 元素1 元素2 而不是 元素1 元素2 如何删除 CoreMongo
  • 加密 mongodb 中的密码字段

    我有以下代码 它插入userName and password进入数据库 但密码以纯文本格式存储 我的意思是 当我查看数据库时 我可以看到插入的密码 我想存储password in encrypted format MongoClient
  • MongoDB:连接到 MongoDB 的 resolv.conf 的 DNS 问题

    我想从 MongoDB Atlas 导出一些数据 如果我执行下面的命令 它会尝试连接localhost并导出数据 mongoexport uri mongodb srv
  • node-mongodb-native的插入性能

    我正在使用 MongoDB 测试 Node js 的性能 我知道其中每一个都很好 彼此独立 但我正在尝试一些测试来感受它们 我遇到了这个问题 但无法确定来源 问题 我正在尝试在单个 Node js 程序中插入 1 000 000 条记录 它

随机推荐

  • 【Go】基于telegraf进行自定义插件开发(一)

    基于telegraf进行插件的自定义 xff08 一 xff09 前言正文环境准备目录结构插件结构示例代码注册插件 结语 前言 以长期使用Prometheus和各种exporter的经验来说 xff0c 大量的exporter会占用物理机的
  • 【Go】基于telegraf进行自定义插件开发(二)

    基于telegraf进行自定义插件开发 xff08 二 xff09 前言正文设计开发过程单个服务的处理结构体同时定义了string和数值类型适配本机服务或者多个ip来源 程序打包 结语 前言 书接上会 xff0c 这次记录一下我基于tele
  • 【DataX】数据同步到PG时遇到的分区不存在问题

    数据同步到PG时遇到的分区不存在问题 前言正文问题分析解决方法 结语 前言 大概说下这个问题牵扯出来的背景 xff0c 一个外场项目 xff0c 选型用PG存业务数据 xff0c 然后客户要求保存保留一年的数据 xff0c 运行到现在服务器
  • 【Linux】Sudo的隐晦bug引发的一次业务问题排查

    Sudo的隐晦bug引发的一次业务问题排查 写在前面问题描述问题排查高负载现象排查日志排查跟踪任务调度过程Sudo引发的问题手动复现 问题分析处理方案 写在前面 记录一次生产环境sudo启动进程频繁被Kill且不报错的异常处理过程 xff0
  • 记一次使用SQOOP抽数到Hive遇到的问题

    记一次使用SQOOP抽数到Hive遇到的问题 前置条件 1 源端数据库类型为Mysql 2 目标端是Hive库 xff0c beeline为1 1 0 3 Hive建表时使用了分桶 xff0c 并且加入了stored as orc参数 xf
  • 我的世界光影使用方法

    光影使用方法 写这个主要是为了记录下最近捯饬我的世界服务端和客户端时遇到的一些东西 xff0c 全当随笔了 首先要确认已经安装了高清补丁 xff0c 这次使用的客户端版本是1 12 2 1 下载光影压缩包 xff0c 一般都是zip格式 2
  • 【系统篇 / 配置】❀ 05. 新建管理帐户 ❀ Windows Server 2016

    简介 Windows Server 2016 安装完成后 xff0c 默认的管理帐户是administrator xff0c 拥有绝对权限 xff0c 但是在日常管理中不建议使用这个帐户 xff0c 一旦密码泄露 xff0c 服务器就门洞大
  • 【系统篇 / 域】❀ 04. 组 ❀ Windows Server 2016

    简介 如果能够使用组 xff08 group xff09 来管理用户帐户 xff0c 则必定能够减轻许多网络管理负担 对某个组设置权限后 xff0c 此组内的所有用户都会自动拥有此权限 新建组 可以通过 Active Directory 用
  • Gson源码之TypeAdapterFactory

    TypeAdapterFactory 1 接口类 xff0c 主要是用来创建TypeAdapter对象的2 若Json中的数据结构相同 xff0c 可以进行共享3 其实现类分别是JsonAdapterAnnotationTypeAdapte
  • 如何修改Win10的Windows Terminal的背景(带图文)

    效果图 Windows PowerShell的下载 在Win10上已经带有了新出的Windows Terminal xff08 preview xff09 相对于cmd的界面已经好看了很多 xff0c 但是对着黑乎乎的背景还是容易让人萌发想
  • 普通类和抽象类有哪些区别?

    普通类和抽象类有哪些区别 xff1f 抽象类不能被实例化抽象类可以有抽象方法 xff0c 抽象方法只需申明 xff0c 无需实现含有抽象方法的类必须申明为抽象类抽象的子类必须实现抽象类中所有抽象方法 xff0c 否则这个子类也是抽象类抽象方
  • 美团技术十年:让我们感动的那些人那些事

    时光荏苒 xff0c 美团十岁了 xff0c 美团技术团队也走过了十个春秋 2010年3月4日美团网上线的时候 xff0c 整个公司总共十来人 xff0c 在一套三居室的民房里起步 其中技术团队只有5个人 xff0c 现在有4位还在美团 今
  • linux update kernel

    1 update source step 1 deb https mirrors zju edu cn ubuntu focal main restricted universe multiverse deb https mirrors z
  • sql基础知识left join,right join,inner join区别

    1 left join即以左表为主查出左边表对应的所有数据 lt pre name 61 34 code 34 class 61 34 sql 34 gt select from A left join B on A id 61 B pid
  • 明知 | TypeScript 结合 egg.js 基本使用

    小小又进入了学习状态 xff0c 此时小小由于最近接触了js的相关内容 xff0c 进而接触了一些ts相关的内容 xff0c 所以小小本次主要学习的内容是ts 安装相关依赖 这里安装两个依赖 xff0c 分别为egg和ts 安装ts 这里需
  • 数据库中like的用法

    转自 xff1a http www pinlue com article 2020 03 3100 0310073883813 html
  • Log4j 2使用教程

    转载自 Blog of 天外的星星 xff1a http www cnblogs com leo lsw p log4j2tutorial html Log4j 2的好处就不和大家说了 xff0c 如果你搜了2 xff0c 说明你对他已经有
  • http常见的响应状态码

    HTTP响应状态码分类 1XX xff1a 100 199 信息响应 2XX xff1a 200 299 成功响应 3XX xff1a 300 399 重定向 4XX xff1a 400 499客户端错误 5XX xff1a 500 505
  • vncserver无法启动

    一 问题现象 运行vncserver的时候提示出错 xff0c 查看vnc的日志发现如下错误日志 litin 64 linuxService vnc cat linuxService 4 log Xvnc Free Edition 4 1
  • MongoDB自学笔记12---4.4 更新文档

    4 4 更新文档 Mongodb的增删查都已经学完了 xff0c 只剩下更新了 在mongodb中提供了update 和save 方法用于更新一个文档 xff0c update 是使用最多的 xff0c save 在前面4 1插入文档的时候