在mongodb提供的shell api的情况下,$set操作符很关键。
不用$set,则全用传入的obj直接替换成符合条件的记录,但这在使用update命令且multi为true的条件下是不能执行的。
原始数据:
{
"name": "test",
"age":18
}
数据操作:
db.test.update({name: 'test'}, {age: 11})
or
db.test.findOneAndUpdate({name: 'test'}, {age: 11})
结果:
{
"age":11
}
一般情况下,我们只希望修改指定的属性,而不需要替换整条记录,这时候就需要用$set。
原始数据:
{
"name": "test",
"age":18
}
数据操作:
db.test.update({name: 'test'}, {$set: {age: 11}})
or
db.test.findOneAndUpdate({name: 'test'}, {$set: {age: 11}})
结果:
{
"name": "test",
"age":11
}
使用mongoose修改记录时,下面两种操作,无论是update还是findOneAndUpdate,加与不加$set操作符,结果都一样。
update:
test.update({name: 'test'}, {existFiled: '123'})
or
test.update({name: 'test'}, {$set: {existFiled: '123'}})
findOneAndUpdate:
test.findOneAndUpdate({name: 'test'}, {existFiled: '123'})
or
test.findOneAndUpdate({name: 'test'}, {$set: {existFiled: '123'}})
结果:
{
"name": "test",
"age":11,
"existFiled": '123'
}
使用mongoose的小伙伴要注意咯,它的api名字虽然与mongodb相同,但经过了mongoose自身的处理,所以不能完全对照着mongodb的api来写mongoose的操作。
感谢您的阅读!
如果看完后有任何疑问,欢迎拍砖。
欢迎转载,转载请注明出处:http://www.yangrunwei.com/a/62.html
邮箱:glowrypauky@gmail.com
QQ: 892413924