[NodeJS]MongoDB updateMany with pull operator 不工作

时间:2021-08-01 13:38:25

标签: node.js mongodb mongodb-query

我目前在 nodejs(14.17.3) 和 typescript(3.8.0) 中使用 mongodb(4.0.1)。

我想要做的是使用 pull 运算符删除嵌入的文档。 这是我正在处理的文档的部分架构。

{
 ...
 dlist_solo: {
  ...
  docId: string;
 }[]
  ...
}

dlist_solo 字段是一个嵌入文档数组,其中嵌入文档的 docId 作为字符串值。

在某些情况下,我必须使用 updateOne 方法和 updateMany 方法。

someCollection.updateOne(
        {
            id: {
                $eq: someId
            }
        },
        {
            $pull: {
                dlist_solo: {
                    docId: {
                        $in: docIds
                    }
                }
            }
        }
    )

这适用于打字稿警告并按我的预期运行。但是当我使用相同的过滤器并使用 UpdateMany 操作符更新文档时,它显示一个错误并且无法编译它。我查看了 mongodb.d.ts 文件,它们在两种方法(updateOne 和 UpdateMany)中都使用了相同的 UpdateFilter 类型。

someCollection.updateMany(
        {
            id: {
                $in: someIds
            }
        },
        {
            $pull: {
                dlist_solo: {
                    docId: {
                        // $in is underlined red and says:
                        // Type 'string[]' is not assignable to type 'never'
                        $in: docIds
                    }
                }
            }
        }
    )

此外,任何试验都会给我红色下划线。 这是我的编辑器的快照。 same filter and update document, different result

谁能知道我做错了什么?

+

我还使用了 arrayFilters 选项,认为它可能有帮助但不起作用。

0 个答案:

没有答案