MongoDB 修改器push(Java实现)

本文介绍在MongoDB中如何对内嵌文档和内嵌数组进行操作,特别是使用$set和$push修改器的区别。通过实例展示了当需要添加新记录时,如何从内嵌文档转换为内嵌数组,并成功实现追加。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

由于表结构设计中需要对内嵌文档进行添加,如下:

{

   name:Joli;

   age: 24;

   course:{  //内嵌文档形式

       00:{XXXXX};

      05:{XXXXX};

     ......

    }

}

利用set修改器时,可以修改内嵌文档形式,实现如下:

BasicDBObject use1 = new BasicDBObject();
                    use1.put("时间", time);
                    use1.put("_id", new ObjectId(id));

col.updateOne(use1, new BasicDBObject().append("$set", new BasicDBObject().append(mm, doc2)));

其中,updateOne(arg1,arg2)中两个参数,第一个arg1是定位到某条记录,第二个arg2是进行怎样的修改

但是set修改器是覆盖了所以course中的记录,替换了一条新的记录,而不是往尾部添加;

将set换成push以后,出现了error,意思是push只能进行内嵌数组的添加,而不能进行内嵌文档的添加,不得已,将内嵌文档改为了内嵌数组,形式如下:

{

   name:Joli;

   age: 24;

   course: [   //内嵌数组形式

       00:{XXXXX};

      05:{XXXXX};

     ......

    ]

}

再次执行语句:

col.updateOne(use1, new BasicDBObject().append("$push", new BasicDBObject().append(mm, doc2)));

发现可以争取追加:

{

   name:Joli;

   age: 24;

   course: [   //内嵌数组形式

       00:{XXXXX};

      05:{XXXXX};

     10:{“我是新追加的文档”}

     ......

    ]

}

注意:在使用MongoDB的修改器时,需要先定位到需要修改的文档


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值