mongoDB更新单个数组元素中的多个字段(来自表单)

史考特

我在这个问题上看到了很多变体,但是在这个特定问题上却没有。考虑以下文档:

{
    "class" : "english101",
    "students" : [
        {
            "name" : "julie",
            "age" : 32,
            "gpa" : "3.4"
        },
        {
            "name" : "heather",
            "age" : 34,
            "gpa" : "3.8"
        }
    ]
}

我想同时更新nameage字段。这是我正在尝试的方法:

db.test.update(
    {
        'class':'english101', 
        'students.name':'julie'
    },
    {
        $set: {
            'students.$': {
                'name':'jules',
                'age':'31'
            }
         }
     }
 )

结果是这样的:

{
    "class" : "english101",
    "students" : [
        {
            "name" : "jules",
            "age" : "31",
            # GPA IS GONE!
        },
        {
            "name" : "heather",
            "age" : 34,
            "gpa" : "3.8"
        }
    ]
}

问题是,而不是期望update$set行为,它取代,而不是仅仅更新提供的字段中的整个阵列的项目。

我应该怎么做?

萨尔瓦多·达利(Salvador Dali)

在您的情况下,您将使用一个对象进行更新,该对象将覆盖所有内容。这是一种正确的方法。

 db.test.update({
      'class':'english101', 
      'students.name':'julie'
 },{
      $set: {
          'students.$.name': 'jules',
          'students.$.age' : 31
      }
 })

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用Vuejs在单个数组元素中包含多个字段

mongodb:如何更新单个文档的嵌套数组项中的多个字段

Mongodb-更新JSON数组中的多个数组元素

如何在mongodb中更新多个数组元素

更新与mongodb中的查询匹配的多个数组元素

MongoDB:在多个字段上进行单个更新V / S在单个字段上进行多个更新?

将Data Studio中的多个字段合并为来自同一源的单个字段

将表单中的多个字段插入数据库中的单个字段

弹性搜索在单个查询请求中更新多个字段

如何更新多个 solr 文档中的单个字段值

在单个PUT请求中更新多个字段

mongodb $ lookup数组子文档中的单个字段

更新mongodb中数组中的多个元素

如何根据另一个字段更新mongodb中的数组字典元素

如何在Mongodb,Express,NodeJs中更新数组内的多个字段?

单个数组可在每个元素中存储多个变量

在Java中将多个对象存储在单个数组元素中

Mongodb 更新文档上多个数组的元素

在CodeIgniter MongoDB中的文档中插入多个数组元素

Java + MongoDB:更新文档中的多个字段

如何使用数组更新MySQL表中的多个字段?

在多个字段中搜索单个值

按字段排序多个数组元素

将数组中的元素推送到mongodb中的单个数组中

MongoDB聚合:将单独的文档字段投影到单个数组字段中

MongoDB设置多个字段进行更新

更新嵌套数组中的单个字段值而不修改其他字段值?

在Redis中更新哈希的单个字段

提交表单中的多个字段(PHP)