由于表结构设计中需要对内嵌文档进行添加,如下:
{
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的修改器时,需要先定位到需要修改的文档