gpt4 book ai didi

node.js - 如果在单个查询中 $pull 后数组计数为零,则 mongodb 删除文档

转载 作者:可可西里 更新时间:2023-11-01 09:13:25 25 4
gpt4 key购买 nike

我有一个要求,我的 comments 架构如下所示

{
"_id": 1,
"comments": [
{ "userId": "123", "comment": "nice" },
{ "userId": "124", "comment": "super"}
]
}

我想根据 userId 字段提取元素。我正在做以下查询

comments.update({},{$pull:{comments:{userId:"123"}}})

我的要求是,如果在 pull 运算符之后数组长度变为零,我需要出于某种原因删除整个文档。是否可以在单个查询中执行此操作?

PS:我用的是mongodb驱动,不是mongoose

最佳答案

如果我没看错你的问题,在 $pull 之后,如果 comments 数组为空(零长度),则删除文档 ( { _id: '', 评论: [] }).

这应该删除所有 comments 数组存在且为空的文档:

comments.remove({ comments: { $exists: true, $size: 0 } })

我有类似的要求并使用了这个(虽然使用 mongoose):

await Attributes.update({}, { $pull: { values: { id: { $in: valueIds } } } }, { multi: true })
await Attributes.remove({ values: { $exists: true, $size: 0 } })

不确定是否可以在一次操作中执行此操作。

关于node.js - 如果在单个查询中 $pull 后数组计数为零,则 mongodb 删除文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44629010/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com