使用mongodb过滤聚合
我需要筛选此查询,以便不显示值使用mongodb过滤聚合,mongodb,Mongodb,我需要筛选此查询,以便不显示值未定义的文档。目前,我的代码显示以下结果: db.getCollection("actors").find({}) db.actors.aggregate([ { $group: { _id: "$cast", Peliculas: { $sum: 1 } }, }, { $sort: { Peliculas: -1 } }, { $limit: 2 } ]) 我需要一些过滤器,使未定义的消失,以便将我显示为第一
未定义的文档。目前,我的代码显示以下结果:
db.getCollection("actors").find({})
db.actors.aggregate([
{
$group: { _id: "$cast", Peliculas: { $sum: 1 } },
},
{ $sort: { Peliculas: -1 } },
{ $limit: 2 }
])
我需要一些过滤器,使未定义的
消失,以便将我显示为第一个值:哈罗德·劳埃德
我以前执行过以下操作:
//unwind
db.getCollection("Tarea").find({})
fase1 = { $unwind: "$cast"}
etapas = [fase1]
db.Tarea.aggregate( etapas )
//out
fase1 = { $unwind: "$cast" }
query2 = { "_id": 0 }
fase2 = { $project: query2 }
fase3 = { $out: "actors" }
etapas = [ fase1, fase2, fase3 ]
db.Tarea.aggregate( etapas )
现在我有了一个名为“演员”的新收藏。试试这个
参考文献
试试这个
参考文献
@hbamithkumara如果您想消除强制转换数组为空的所有记录,那么答案将非常有效。但是,如果您还想显示所有空强制类型数组的计数Peliculas
,并使用默认文本,如无强制类型
,您可以尝试以下操作
你可以测试一下
结果是
[
{
"Peliculas": 1,
"_id": [
"Paul Boyton"
]
},
{
"Peliculas": 1,
"_id": [
"Ching Ling Foo"
]
},
{
"Peliculas": 21,
"_id": [
"No Cast"
]
}
]
@如果您想消除强制转换数组为空的所有记录,hbamithkumara answer将非常有效。但是,如果您还想显示所有空强制类型数组的计数Peliculas
,并使用默认文本,如无强制类型
,您可以尝试以下操作
你可以测试一下
结果是
[
{
"Peliculas": 1,
"_id": [
"Paul Boyton"
]
},
{
"Peliculas": 1,
"_id": [
"Ching Ling Foo"
]
},
{
"Peliculas": 21,
"_id": [
"No Cast"
]
}
]
我最终解决了这个问题,在代码中添加了这一行:
{$match: {cast:{$ne:"Undefined"}}}
现在完整的代码如下所示:
db.actors.aggregate([
{$match: {cast:{$ne:"Undefined"}}},
{$group : {_id: "$cast", total : {$sum: 1 }}},
{$sort:{total:-1}},
{$limit:5}])
我可以在没有未定义的情况下看到前5名演员名单:
谢谢大家。我终于解决了问题,在代码中添加了这一行:
{$match: {cast:{$ne:"Undefined"}}}
现在完整的代码如下所示:
db.actors.aggregate([
{$match: {cast:{$ne:"Undefined"}}},
{$group : {_id: "$cast", total : {$sum: 1 }}},
{$sort:{total:-1}},
{$limit:5}])
我可以在没有未定义的情况下看到前5名演员名单:
谢谢大家。您能分享json示例吗?当然可以。json就在这里:这是否回答了您的问题?你能分享一下json示例吗?当然可以。json就在这里:这是否回答了您的问题?我认为这是没有必要的,因为有人提到我需要一些过滤器,使未定义的消失在问题中。你的答案是正确的,工作,但这只是另一个可用的选项,可能会在其他一些用例中派上用场。我认为这是没有必要的,因为有人提到我需要一些过滤器,使未定义的消失在问题中问题。您的答案是正确的,而且有效,但这只是另一个选项,可能在其他用例中派上用场。谢谢大家。也许我没有很好地表达自己。我需要的正是:在演员方面,获得一份参与过更多电影的演员名单(可以将其限制为一个,因为该参数可以修改),不删除未定义的记录,但对其进行筛选,使其不会出现在查询中。我希望它们继续显示为未定义的记录,但不要显示为参与电影的顶级演员。谢谢!谢谢大家。也许我还没有很好地表达自己。我需要的是:在演员方面,获取演员的顶级列表参与过更多电影的rs((t可以限制为仅一部,因为该参数可以修改),不删除未定义的记录,但对其进行过滤,使其不会出现在查询中。我希望他们继续显示为未定义,但不要显示为参与过电影的顶级演员。谢谢!