MongoDB 修改器push(Java实现)

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

{

   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的修改器时,需要先定位到需要修改的文档


你可能感兴趣的:(MongoDB 修改器push(Java实现))