値をmongoコレクションに更新するたびにそれを見てきました。更新後、キーをアルファベット順に再配置します。現在のスキーマが
_id:"Objectid(blah blah)"
id: "1",
fullname: "user",
username: "username",
password: "password",
更新後は
_id:"Objectid(blah blah)"
fullname:"user"
id:"1"
password:"password"
username:"user"
私はこれに問題がないことを知っています。配列データは値に対応したままなので、これは何にも影響しません。しかし、なぜこれが起こるのか知りたいだけです。
編集:
これはmongoshellの更新機能コードです。しかし、これは私を助けませんでした
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");
}