gpt4 book ai didi

mongodb - 聚合时如何自动添加除一个字段外的所有字段?

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

我有一个 mongodb 集合,其中包含具有多个属性(可能很多)的对象。其中一个是另一种对象类型的数组,这种类型有一个 bool 属性 StateChanged

我想查询返回此集合中的所有记录,并过滤数组以仅获取具有 StateChanged = true 的文档。

这是我已经做过的:

db.getCollection('Cycles').aggregate([
{
$project: {
_id: 0,
// Here I could add Field1: 1, Field2: 1,...
'Subcycles' : {
$filter : {
input: '$Subcycles',
as : 'sub',
cond: { $eq: ['$$sub.StateChanged',true]}
}
}
}
}
])

然而,这只会给我带来“Subcycles”系列。我想要的是在根文档中包含其他字段。

我可以在投影中手动指定它们(如 Field1: 1、Field2: 1,...),但由于可能有很多字段,我想知道是否有一种方法可以自动将它们全部显示出来。

提前致谢!

最佳答案

您可以使用 $addFields而不是 $project .它会自动用现有字段替换新字段。

db.getCollection("Cycles").aggregate([
{ "$addFields": {
"Subcycles": {
"$filter": {
"input": "$Subcycles",
"as": "sub",
"cond": { "$eq": ["$$sub.StateChanged", true] }
}
}
}},
{ "$project" : { "_id": 0 }}
])

关于mongodb - 聚合时如何自动添加除一个字段外的所有字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56445558/

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