MongoDB修改

最近研究了一下MongoDB,感觉修改的有点点麻烦我这里总结一下。

update(q, o, upsert, multi);

第一个是条件;
第二个参数是修改的内容;
第三个没有找到条件的项是否添加,默认false;
第四个参数是是否多个结果修改,默认false。

如果没有使用参数的状况下,默认修改第一条。

如果没有使用$set,那么将会替换里面所有的属性:
MongoDB查询结果

使用了修改器,就会追加到最后:
MongoDB查询结果

然后麻烦一点就是批量修改:
如果是多个修改的时候我们需要设置修改器。否者会出错:

multi update only works with $ operators

我们需要这么写:
MongoDB查询结果

修改器:

$set和$unset:修改字段值和删除字段;
$rename:修改字段名字,db.dm.update({}, {$rename:{“age”:“ages”}}, false, true);
$inc:数字类型字段增减,db.dm.update({}, {$inc:{“age”:1}}, false, true);
$push和$pushAll:向数组类型末尾追加数据,字段不存在则创建;
$addToSet:向数组类型追加数据时避免重复;
$each:遍历数组;
$pop:从数组中删除数据,{$pop:{key:1}}从末尾删除数据,-1从头部删除;
$pull和$pullAll:从数组中删除指定数据;
数组定位修改器:数组可以通过下标定位,也可以通过‘$’定位查询匹配到的记录;

参考:http://blog.sina.com.cn/s/blog_6a26423901016wu1.html

Python中修改:

print dm.update({"age" : 1}, {"$set" : {"age" : 10}}, upsert=False, multi=True);

注意一下最后两个参数的书写格式。