首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >mongodb元素匹配和更新查询

mongodb元素匹配和更新查询
EN

Stack Overflow用户
提问于 2018-03-01 00:09:57
回答 1查看 453关注 0票数 0

下面我有一个名为users details的集合

代码语言:javascript
运行
复制
[{
"userId": "00UPQAARGT7",
"userPreferences": [{
    "pId": "59SDS64675A00096D48CB",
    "pData": [{
            "name": "FORMAT",
            "value": "CSV"
        },
        {
            "name": "LAN",
            "value": "E"
        }
    ]
},
{
    "pId": "59SDS64675A00096D59DB",
    "pData": [{
            "name": "FORMAT",
            "value": "DOC"
        },
        {
            "name": "LAN",
            "value": "N"
        }
    ]
}
]},
{
"userId": "02UPQAARST7",
"userPreferences": [
{
    "pId": "59SDS64675A00096D48DB",
    "pData": [{
            "name": "FORMAT",
            "value": "CSV"
        },
        {
            "name": "LAN",
            "value": "N"
        }
    ]
},
{
    "pId": "59SDS64675A00096D59DB",
    "pData": [{
            "name": "FORMAT",
            "value": "PPT"
        },
        {
            "name": "LAN",
            "value": "N"
        }
    ]
}
]}  
]

我希望将userPreferences.pData.value设置为"TAB",其中userPreferences.pData.name"FORMAT",将userPreferences.pData.value设置为"FRN",其中userPreferences.pData.name"LAN",但希望应用条件,其中<代码>D11和<代码>D12中的userId

任何帮助如何在mongodb中使用单个查询

我使用的是mongodb 3.4.1版本

EN

回答 1

Stack Overflow用户

发布于 2018-03-01 04:23:59

由于以下两个原因,您不能按您想要的方式执行此操作:

  1. 在MongoDB 3.4中,positional operator '$'仅匹配找到的第一个子文档。这一点在v3.6中发生了变化,现在您可以使用$[]语法来定位所有匹配的subdocuments.
  2. You,从今天起,在任何版本的MongoDB中都不能指定条件更新。不过,这里有一个开放的特性请求:https://jira.mongodb.org/browse/SERVER-6566

因此,你基本上只能选择在客户端进行更改(不幸的是,速度较慢),你可以找到大量的示例,例如:

MongoDB update multiple subdocuments with or query

Update all sub-documents inside document mongodb

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

https://stackoverflow.com/questions/49033887

复制
相关文章

相似问题

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