MongoDB有两个更新方法,一个是db.collection.update(),另一个更新命令是db.collection.save()
。
db.collection.save(obj)
其中,obj就是要更新的对象,只能是单条记录。如果在collection内已经存在一个和obj对象相同的"_id"的记录,MongoDB就会把obj对象替换collection内已经存在的记录,否则将会插入obj对象。如果obj内没有_id,系统会自动生成一个再插入,相当于update语句的upsert=true,multi=false的情况。
先确认集合是空的,如下面的代码所示:
>db.t2.find() >
再调用save插入一条数据,如下面的代码所示:
>db.t2.save({_id:10,name:"wangwenlong",age:31}) >db.t2.find() {"_id":10,"name":"wangwenlong","age":31}
本例由于t2表中原来没有_id=10的记录,所以插入了一条新的。接下来调用save来更新已有的数据,如下面的代码所示:
>db.t2.save({_id:10,name:"wangwenlong",age:100}) >db.t2.find() {"_id":10,"name":"wangwenlong","age":100} >
在本例中由于t2表中已经有了_id=10的记录,所以就将这条记录更新一下,可以看出save操作等同于upsert操作。