MongoDB-增加对象中的嵌套值 请考虑“组”集合以下文档 "auto_availability" : { "54c5c59d75de3e8d0a8b4567" : 12, "54c5c59d75de3e8d0a8b4568" : 12, "54c5c59d75de3e8d0a8b4569" : 12, "54c5c59d75de3e8d0a8b456a" : 12, "54c5c59d75de3e8d0a8b456b" : 12, "54c5c59d75de3e8d0a8b456c" : 12, "54c5c59d75de3e8d0a8b456d" : 12, "54c5c59d75de3e8d0a8b456e" : 12, "54c5c59d75de3e8d0a8b456f" : 12, "54c5c59d75de3e8d0a8b4570" : 12, "54c5c59d75de3e8d0a8b4571" : 12, "54c5c59d75de3e8d0a8b4572" : 12, "54c5c59d75de3e8d0a8b4573" : 12, "54c5c59d75de3e8d0a8b4574" : 12, "54c5c59d75de3e8d0a8b4575" : 12, "54c5c59d75de3e8d0a8b4576" : 12, "54c5c59d75de3e8d0a8b4577" : 12, "54c5c59d75de3e8d0a8b4578" : 12 }

MongoDB-增加对象中的嵌套值 请考虑“组”集合以下文档 "auto_availability" : { "54c5c59d75de3e8d0a8b4567" : 12, "54c5c59d75de3e8d0a8b4568" : 12, "54c5c59d75de3e8d0a8b4569" : 12, "54c5c59d75de3e8d0a8b456a" : 12, "54c5c59d75de3e8d0a8b456b" : 12, "54c5c59d75de3e8d0a8b456c" : 12, "54c5c59d75de3e8d0a8b456d" : 12, "54c5c59d75de3e8d0a8b456e" : 12, "54c5c59d75de3e8d0a8b456f" : 12, "54c5c59d75de3e8d0a8b4570" : 12, "54c5c59d75de3e8d0a8b4571" : 12, "54c5c59d75de3e8d0a8b4572" : 12, "54c5c59d75de3e8d0a8b4573" : 12, "54c5c59d75de3e8d0a8b4574" : 12, "54c5c59d75de3e8d0a8b4575" : 12, "54c5c59d75de3e8d0a8b4576" : 12, "54c5c59d75de3e8d0a8b4577" : 12, "54c5c59d75de3e8d0a8b4578" : 12 },mongodb,mongodb-query,aggregation-framework,Mongodb,Mongodb Query,Aggregation Framework,我需要从开始的“54c5c59d75de3e8d0a8b4568”增加4个字段10 预期结果: "auto_availability" : { "54c5c59d75de3e8d0a8b4567" : 12, "54c5c59d75de3e8d0a8b4568" : 22, "54c5c59d75de3e8d0a8b4569" : 22, "54c5c59d75de3e

我需要从开始的
“54c5c59d75de3e8d0a8b4568”
增加4个字段10

预期结果:

"auto_availability" : {
                "54c5c59d75de3e8d0a8b4567" : 12,
                "54c5c59d75de3e8d0a8b4568" : 22,
                "54c5c59d75de3e8d0a8b4569" : 22,
                "54c5c59d75de3e8d0a8b456a" : 22,
                "54c5c59d75de3e8d0a8b456b" : 22,
                "54c5c59d75de3e8d0a8b456c" : 12,
                "54c5c59d75de3e8d0a8b456d" : 12,
                "54c5c59d75de3e8d0a8b456e" : 12,
                "54c5c59d75de3e8d0a8b456f" : 12,
                "54c5c59d75de3e8d0a8b4570" : 12,
                "54c5c59d75de3e8d0a8b4571" : 12,
                "54c5c59d75de3e8d0a8b4572" : 12,
                "54c5c59d75de3e8d0a8b4573" : 12,
                "54c5c59d75de3e8d0a8b4574" : 12,
                "54c5c59d75de3e8d0a8b4575" : 12,
                "54c5c59d75de3e8d0a8b4576" : 12,
                "54c5c59d75de3e8d0a8b4577" : 12,
                "54c5c59d75de3e8d0a8b4578" : 12
            }

如果你有任何想法,请帮助我。

你处理这件事的方式有很多错误。最基本的是,这不是一个数组,因此您需要了解其中的差异

  • 数据作为键名。这些键值显然是从ObjectId值派生的,在对象中没有键值名称的位置。这是一个糟糕的模式。无法索引键名,只能索引数据。不管是谁教你这是一个可行的设计模式,把它们发给我,我会纠正它们。不要那样做

  • 您可以将数据表示为一个数组,但如果不首先执行其他需要大量开销的查询工作,就不能将“从x开始获取下四个”作为要匹配的值

  • 考虑到以上两种情况,您可能应该将这些离散的文档放在一个集合中。用法不清楚,但可能是最干净的


  • 我的意思是:

    案例1
    这不是最好的模式,您可能应该这样做,因为您无法查询名称的值:

    “自动可用性”:[
    {“_id”:“54c5c59d75de3e8d0a8b4567”,“值”:12},
    
    {“_id”:“54c5c59d75de3e8d0a8b4568”,“value”:12},//您在标题中提到了一个数组,但您提供的“自动可用性”json不是数组。哪一个是对的?@joao抱歉,它是一个对象。我更改了标题。在您的第三种情况下,您不会在查找中强制排序,因为将始终使用_id索引(因此检索文档总是按ASC排序)?@joao公平观察。真正的目的是这些将是
    ObjectId
    值而不是字符串(特别是在最后一种情况下)。但实际上,即使字符串是“lexcial”值,并且仍然符合
    ObejctId
    所遵循的“幂等”概念。因此“它总是比插入“下一个”时更大”