mongodb 有没有办法在mongo聚合过程中“移除”一个字段?

siv3szwd  于 2023-02-03  发布在  Go
关注(0)|答案(1)|浏览(107)

有没有办法在聚合过程中删除字段?我得到了如下结果:

{
"firstName":"Patient1",
"lastName":"last",
"addresses":[
    {
     "street1":"1011 Happy Lane",
     "street2":"Apt 1",
    },
],
"phone":"11111111"
}

我正在尝试从结果中排除“地址”:

{
"firstName":"Patient1",
"lastName":"last",
"phone":"11111111"
}

我发现$unset,但似乎只在更新工作。
我也不想手动“分组”其他项目,因为我需要返回所有东西,除了我想排除的属性。选择性添加似乎在聚合中非常容易,但选择性删除似乎有点复杂。感谢这里的任何想法。

wgmfuz8q

wgmfuz8q1#

在管道中使用$project阶段。使用投影时有两种选择。
第一种方法是,通过指定要包含的字段(值为1),可以将返回的字段列入白名单。

{ $project: {
    firstName: 1,
    lastName: 1,
    phone: 1
}}

第二种方法是通过指定不希望包含的字段,并将其值设为0,将返回的字段列入黑名单。

{ $project: {
    addresses: 0
}}

这两种方法都有各自的优点,应该使用哪一种主要取决于您的用例。一个好的经验法则是,如果您只需要某些字段,并且不想在添加新字段时修改投影阶段,则应该使用白名单方法,但如果您只想排除某些字段,同时允许任何新字段包含在结果中,则应该使用黑名单方法。

相关问题