首页 > 解决方案 > 在子文档数组内的子文档上使用 `$or` 时,`$` 位置运算符未找到查询所需的匹配项

问题描述

得到错误:The positional operator did not find the match needed from the query

db里面的数组叫做children

const child = {id: 'someId', uniqueField: 'someNumber'} 

  Model.findOneAndUpdate(
    {
      id: parentDocId,
      $or: [
        {
          children: {
            $elemMatch: {
              id: child.id,
              uniqueField: child.uniqueField,
            },
          },
        },
        {
          'children.id': child.id,
          'children.uniqueField': { $ne: child.uniqueField },
        },
      ],
    },
    {
      $set: { 'children.$.name': 'Indicator it worked' },
    },

$or分别适用于任何一个条件,但是当我将它们放在一起时,它会因该错误而失败,条件$or运算符是否不适用于$位置运算符?在网上找不到有关此主题的任何信息。

里面的目标数组parentDoc叫做children _ _并且没有改变,否则已经改变但新的在阵列上的任何地方都不存在。childchildrenuniqueFieldchilduniqueField$oruniqueFielduniqueField

标签: node.jsmongodbmongoose

解决方案


推荐阅读