mongodb中update的使用
来源:互联网 发布:文都看视频的软件 编辑:程序博客网 时间:2024/05/20 06:04
由于在使用mongodb的过程中有碰到下面的问题,所以写下来方便以后查阅。
下面是一段示例代码:
Mongo mongo = new Mongo("localhost", 27017); DB db = mongo.getDB("abc"); DBCollection collection = db.getCollection("aaa");DBObject query = new BasicDBObject();query.put("xx", xx);DBObject record = new BasicDBObject();record.put("xxx", xxx);collection.update(query, record, true, true);
在运行程序之前,mongodb中并不存在abc这个DB,也不存在aaa这个collection。
但是,按照正常情况,通过调用getDB获取数据库,如果是数据库不存在的情况下,会自动创建该数据库。同理,调用getColletion的时候,也会自动创建不存在的Colletion。
结果,运行程序之后发现,mongodb中确实创建了abc这个数据库,但是还是不存在aaa这个Collection。
难道是getCollection调用的有问题,所以会创建失败?
可是调试的时候,这里并没有出现异常啊,而且能够正常的执行完update。
那难道是update的时候插入数据失败了?由于没有数据,导致了Colletion也不会去创建?
查看了一下update的说明,第三个参数(upsert if the database should create the element if it does not exist)说明如果query的记录不存在的话,会直接新创建一条记录,那按道理应该不会出现插入数据失败的情况啊?
实在没办法,只好先把update试着用insert代替看能不能成功。结果发现改完之后的程序正常了!
所以,问题就是出在了update当中!回过头再仔细的研究了一下update的说明,发现了一个小细节(An object will not be inserted if it does not exist in the collection and upsert=true and multi=true.)。
好了,那么问题也就解决了。
以后需要注意的有两点:
对于不存在的Colletion来说,使用getColletion的时候,只有在插入了数据之后,才会去创建该Colletion。
upsert和multi两个参数同时为true时, 就算Colletion中不存在满足query条件的记录, update操作也不会去直接添加该记录。
- mongodb中update的使用
- [mongodb]使用mongodb中数组元素的下标来做更新(update)多维数组
- Mongodb的update操作
- mongodb的update
- Mongodb的update操作
- Mongodb的update操作
- Mongodb的update操作
- Mongodb的update操作
- mongodb 的update方法
- Mongodb的update操作
- Mongodb的update用法
- Mongodb的update操作
- Hibernate中Update的使用
- mongodb中update方法的upsert和multi
- 解决 Java MongoDB Driver 中 Update 方法的Bug
- mongoDB的update相关操作
- MongoDB中arbiter的使用
- mongodb中索引的使用
- RNA-seq分析服务器安装生信工具过程
- MySQL
- 网易2018笔试题五
- L1 L2范式的详解以及Scikit-learn上基于L1 L2范式正则化的实例
- 欢迎使用CSDN-markdown编辑器
- mongodb中update的使用
- Ajax状态值及状态码整理
- Strongly connected HDU
- 结构性伪类选择器
- 多线程共享数据 synchronized和使用ThreadLocal区别
- Python入门
- ceph-deploy osd activate xxx bluestore ERROR
- Linux系统根目录详解
- 怎样才能够修改PDF文件中的文字大小