mongodb数组更新操作符$addToSet

mycode:

//example:

db.person.insert([
{
    
    name:'zs', books:[{
    
    name:'html', price:66}, {
    
    name:'js', price:88}], tags:['html', 'js']},
{
    
    name:'ls', books:[{
    
    name:'vue', price:99}, {
    
    name:'node', price:199}], tags:['vue', 'node']}
])

//在name为zs的字段中的tags增添一个vue

db.person.updateOne({
    
    name:'zs'},{
    
    $addToSet:{
    
    tags:'Vue'}})

//注意:如果操作的元素不存在,那么会自动新增,并且将操作的值赋值给新增字段

db.person.updateOne({
    
    name:'zs'},{
    
    $addToSet:{
    
    other:'123'}})

//注意:#addToSet会自动去重,如果添加的元素已经存在了,就不会添加

db.person.updateOne({
    
    name:'zs'},{
    
    $addToSet:{
    
    other:'123'}})

//注意:如果往数组字段中添加的是文档类型,必须一模一样才会进行去重

db.person.updateOne({
    
    name:'zs'},{
    
    $addToSet:{
    
    books:{
    
    name:'html',price:'66'}}})

//下面的和上面的顺序不一样,就不会进行去重

db.person.updateOne({
    
    name:'zs'},{
    
    $addToSet:{
    
    books:{
    
    price:'66',name:'html'}}})

//注意:如果往数组字段中添加的数组,那么必须一模一样才会进行去重

db.person.updateOne({
    
    name:'ls'},{
    
    $addToSet:{
    
    tags:['1','2']}})
db.person.updateOne({
    
    name:'ls'},{
    
    $addToSet:{
    
    tags:['2','1']}})

//注意:如果往数组字段中添加的是数组,那么默认情况下会将整个数组作为一个元素添加进去
//如果不想一个整体添加进去,那么必须使用$each来添加

db.person.updateOne({
    
    name:'ls'},{
    
    $addToSet:{
    
    tags:{
    
    $each:['2','1']}}})
db.person.find()

teacher's code;

1.$addToSet数组更新操作符

$addToSet: 向数组字段中添加元素
格式 :

{
    
    $addToSet: {
    
    <field>:<values>, ...}}
2.示例
db.person.insert([
{
    
    name:'zs', books:[{
    
    name:'html', price:66}, {
    
    name:'js', price:88}], tags:['html', 'js']},
{
    
    name:'ls', books:[{
    
    name:'vue', price:99}, {
    
    name:'node', price:199}], tags:['vue', 'node']}
])
db.person.update({
    
    name:'zs'}, {
    
    $addToSet:{
    
    tags:'react'}})
3.注意点

// 注意点:如果操作的元素不存在, 那么会自动新增, 并且将操作的值赋值给新增的数组字段

db.person.update({
    
    name:'zs'}, {
    
    $addToSet:{
    
    other:'123'}})

// 注意点: $addToSet会自动去重, 如果添加的元素已经存在了, 那么就不会添加了

db.person.update({
    
    name:'zs'}, {
    
    $addToSet:{
    
    other:'123'}})

// 注意点: 如果往数组字段中添加的是文档类型, 那么必须一模一样才会去重

db.person.update({
    
    name:'zs'}, {
    
    $addToSet:{
    
    books:{
    
    name:'html', price:66}}})
db.person.update({
    
    name:'zs'}, {
    
    $addToSet:{
    
    books:{
    
    price:66, name:'html'}}})

// 注意点: 如果往数组字段中添加的是数组, 那么也必须一模一样才会去重
db.person.update({name:‘ls’}, { KaTeX parse error: Expected 'EOF', got '}' at position 27: …ags:['1', '2']}}̲) db.person.upd…addToSet:{tags:[‘1’, ‘2’]}})
db.person.update({name:‘ls’}, { KaTeX parse error: Expected 'EOF', got '}' at position 27: …ags:['2', '1']}}̲) // 注意点: 如果往往数…each来添加

db.person.update({
    
    name:'ls'}, {
    
    $addToSet:{
    
    tags:{
    
    $each: ['1', '2', '3']}}})

猜你喜欢

转载自blog.csdn.net/ice_stone_kai/article/details/123216351