gpt4 book ai didi

mongodb - 有条件地在 mongodb 项目聚合中包含一个字段(_id 或其他)?

转载 作者:行者123 更新时间:2023-12-02 21:21:06 24 4
gpt4 key购买 nike

我有一个带有 $project 阶段的 mongodb 聚合管道,并且我想仅在满足条件时才包含某些字段。具体来说,我想在一个条件中排除 _id,并在另一个条件中包含第二个字段“second_id”。

我知道(尚)不可能从 mongodb $project 中排除字段,但是是否可以有条件地包含它们?

有没有办法有条件地排除 _id 字段?它接受 0 或 1,但如果我想根据 if 语句确定 0 或 1 该怎么办?这将如何完成?

_id 的伪代码:

$project: { _id: { $ifNull: [ "$user_id", 0 ] } }

它的主要用途是使用 doc.user_id 作为结果 _id,或者如果 user_id 为空,则允许 mongodb 创建一个新的自动增量 _id。

最佳答案

目前无法在 $project 阶段执行此操作,但您可以使用 $redact 阶段有条件地删除该字段(即,像在示例中那样将值设置为 0。

db.collection.aggregate(
... matching and stuff ...
{$project: { _id: { $ifNull: [ "$user_id", 0 ] } }},
{$redact: {
{$cond: {
if: { $eq: [ "$user_id", 0 ] },
then: '$$PRUNE',
else: '$$DESCEND'
}}
}

关于mongodb - 有条件地在 mongodb 项目聚合中包含一个字段(_id 或其他)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37933221/

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