【问题标题】:Retrieve specific Record from an array after findOneAndUpdate Mongoose 5.x在 findOneAndUpdate Mongoose 5.x 之后从数组中检索特定记录
【发布时间】:2019-05-04 10:02:31
【问题描述】:

假设我有一个如下文件:

{
  _id: '1'
  persons: [
    {
      userId: 'user1',
      changed: false
    },
    {
      userId: 'user2',
      changed: false
    },
  ]
}

我可以像下面这样简单地更新persons中的特定记录:

Model.findOneAndUpdate(
  {
    _id: '1',
    'persons.userId': 'user1'
  },
  {
    $set: { persons.$.changed: true }
  },
  { new: true }
)

但是返回的document 将包含persons 数组中的每个元素,有什么方法可以让我获得与条件'persons.userId': 'user1' 匹配的特定数组元素?

【问题讨论】:

    标签: javascript arrays node.js mongodb mongoose


    【解决方案1】:

    可以使用projection作为findAndModify的参数之一,试试:

    Model.findOneAndUpdate(
        {
            _id: "1",
            "persons.userId": "user1"
        },
        {
            $set: { "persons.$.changed": true }
        },
        { 
            new: true,
            projection: {
                persons: {
                    $elemMatch: { userId: "user1" }
                }
            } 
        }
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-21
      • 1970-01-01
      • 1970-01-01
      • 2021-11-20
      • 2016-09-14
      相关资源
      最近更新 更多