三、Mongodb実戦の--Mongodb Shellは簡単な更新を実現する
すべての更新操作には少なくとも2つのパラメータが必要です.1つ目は更新するドキュメントを示し、2つ目は選択したドキュメントがどのように更新されるべきかを定義します.
4番目のパラメータは、複数の更新を実行するかどうかを指定します.MongoDBの更新操作は、クエリー・セレクタが一致する最初のドキュメントにデフォルトで適用されます.
source code
function (query, obj, upsert, multi) {
assert(query, "need a query");
assert(obj, "need an object");
var firstKey = null;
for (var k in obj) {
firstKey = k;
break;
}
if (firstKey != null && firstKey[0] == "$") {
this._validateObject(obj);
} else {
this._validateForStorage(obj);
}
if (typeof upsert === "object") {
assert(multi === undefined, "Fourth argument must be empty when specifying upsert and multi with an object.");
opts = upsert;
multi = opts.multi;
upsert = opts.upsert;
}
this._db._initExtraInfo();
this._mongo.update(this._fullName, query, obj, upsert ? true : false, multi ? true : false);
this._db._getExtraInfo("Updated");
}
example
db.users.update({"pwd":"111111"},{$set:{userName:"bychjzh"}})
属性を変更するには$setを使用します
example
:
db.users.update({"pwd":"111111"},{$set:{userName:"bychjzh"}})
属性を削除$unsetを使用
example
db.users.update({"pwd":"111111"},{$unset:{userName:1}})
$pushは配列に要素を追加できます
example
> db.users.insert({"userName":"chjzh","pwd":"111","hobbies":["music","listening"]})
> db.users.find()
{ "_id" : ObjectId("513dad1d5a5c6b621c993e74"), "userName" : "chjzh", "pwd" : "123" }
{ "_id" : ObjectId("51428d3c2540dc509d6d3572"), "pwd" : "111111" }
{ "_id" : ObjectId("5143df5d0d5983f976e05adf"), "userName" : "chjzh", "pwd" : "111", "hobbies" : [ "music", "listening" ] }
> db.users.update({"pwd":"111"},{$push:{"hobbies":"table tenis"}},false,true)
> db.users.find()
{ "_id" : ObjectId("513dad1d5a5c6b621c993e74"), "userName" : "chjzh", "pwd" : "123" }
{ "_id" : ObjectId("51428d3c2540dc509d6d3572"), "pwd" : "111111" }
{ "_id" : ObjectId("5143df5d0d5983f976e05adf"), "hobbies" : [ "music", "listening", "table tenis" ], "pwd" : "111", "userName" : "chjzh" }
$addToSetも配列に要素を追加できます.$pushとは異なり、$addToSetは要素の一意性を保証し、重複追加を防止します.
example
> db.users.update({"pwd":"111"},{$addToSet:{"hobbies":"table tenis"}},false,true)
> db.users.update({"pwd":"111"},{$addToSet:{"hobbies":"basketball"}},false,true)
> db.users.find()
{ "_id" : ObjectId("513dad1d5a5c6b621c993e74"), "userName" : "chjzh", "pwd" : "123" }
{ "_id" : ObjectId("51428d3c2540dc509d6d3572"), "pwd" : "111111" }
{ "_id" : ObjectId("5143df5d0d5983f976e05adf"), "hobbies" : [ "music", "listening", "table tenis", "basketball" ], "pwd" : "111", "userName" : "chjzh" }