首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么MongoDb在更新后按字母顺序对齐集合键

为什么MongoDb在更新后按字母顺序对齐集合键
EN

Stack Overflow用户
提问于 2013-03-17 04:08:12
回答 1查看 491关注 0票数 2

我已经看到,每当我们将任何值更新到mongo集合中。更新后,按字母顺序重新排列关键字。假设当前模式是

代码语言:javascript
运行
复制
  _id:"Objectid(blah blah)"
     id: "1", 
fullname: "user",
 username: "username", 
password: "password",

更新后,它将变为

代码语言:javascript
运行
复制
 _id:"Objectid(blah blah)"
    fullname:"user"
    id:"1"
    password:"password"
    username:"user"

我知道这是没有问题的。这不会影响任何东西,因为在数组中,数据仍然与值相对应。但我只是好奇为什么会发生这种情况。

编辑:

这是mongoshell中的update函数代码。但这并没有帮到我

代码语言:javascript
运行
复制
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");
}
EN

Stack Overflow用户

回答已采纳

发布于 2013-03-17 07:08:52

文档说他们是在文档大小超过分配大小的情况下重新排序的,然而,似乎只要文档大小发生变化,它们就会被重新排序(如果文档大小相同,则不会更改)。

例如,这里的第一个命令没有改变,但是第二个命令改变了。

代码语言:javascript
运行
复制
> db.t3.insert({_id : 1234',id:'xxx',
fullname:'use1',password:'password','username':'user'})
> db.t3.update({'_id':'1234'},{$set : {fullname:'use1'}})
> db.t3.findOne()
{
    "_id" : "1234",
    "id" : "xxx",
    "fullname" : "use1",
    "password" : "password",
    "username" : "user"
}
> db.t3.update({'_id':'1234'},{$set : {fullname:'use11'}})
> db.t3.findOne()
{
    "_id" : "1234",
    "fullname" : "use11",
    "id" : "xxx",
    "password" : "password",
    "username" : "user"
}

看这里,https://jira.mongodb.org/browse/SERVER-2592

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15454150

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档