1: key 里面不能有 . , 然后我比较推荐将它处理为_dot_这样子的自定义符号
2:多用bulk操作,语法忘了就查吧,在我的需求当中我需要遍历的一个collection的时候发现某个变量没有为true的时候就处理下那个document里面的link的这个value,在处理完之后把那个变量标示为true,那么这个时候就需要把储够一定数量的更新操作后 ,用bulk操作来批量地更新,大概是这个样子的,如下代码,还有一个需要注意的是,拿出某一个doc的时候,要它的内置 _id的话,先以字符串形式拿出那个id的串,然后new 一个ObejectID, 就可以了,不能直接用string进去的:
BulkWriteOperation bulkWriteOperation = myCollection.initializeUnorderedBulkOperation(); while(myCursor.hasNext()) { DBObject tempObject = myCursor.next(); String tempString = tempObject.get("_id").toString(); System.out.println(tempString); bulkWriteOperation.find(new BasicDBObject("_id", new ObjectId(tempString))).updateOne(new BasicDBObject("$set", new BasicDBObject("vendor", "sigma_corporation"))); } bulkWriteOperation.execute();
3:处理网页中的 用unicode形式的方法来:
String clean_string = "";
clean_string = dirty_string.replace("\u00a0", "");
4:cursor可以设置每次fetch的大小,它默认的情况下是会读取101个doc进内存的,方法是batchsize