gpt4 book ai didi

MongoDB 投影计数大于 2 的文档

转载 作者:IT老高 更新时间:2023-10-28 13:25:24 25 4
gpt4 key购买 nike

我有一个类似的收藏

{
"_id": "201503110040020021",
"Line": "1", // several documents may have this Line value
"LineStart": ISODate("2015-03-11T06:49:35.000Z"),
"SSCEXPEND": [{
"Secuence": 10,
"Title": 1,
},
{
"Secuence": 183,
"Title": 613,
},
...
],

} {
"_id": "201503110040020022",
"Line": "1", // several documents may have this Line value
"LineStart": ISODate("2015-03-11T06:49:35.000Z"),
"SSCEXPEND": [{
"Secuence": 10,
"Title": 1,
},

],

}

SSCEXPEND 是一个数组。如果计数大于或等于 2,我正在尝试计算 SSC 数组和项目的大小。我的查询是这样的

db.entity.aggregate(
[
{
$project: {
SSCEXPEND_count: {$size: "$SSCEXPEND"}
}
},
{
$match: {
"SSCEXPEND_count2": {$gte: ["$SSCEXPEND_count",2]}
}
}
]
)

我希望输出只是数组大小大于 2 的第一个文档。

项目部分工作正常,我可以得到计数,但我只需要投影那些计数大于或等于 2 但我的匹配部分不起作用的部分。谁能指导我哪里出错了?

最佳答案

您需要投影其他字段和您的 $match 管道只需要对新创建的字段进行查询,以根据数组大小过滤文档。像下面这样的东西应该可以工作:

db.entity.aggregate([
{
"$project": {
"Line": 1,
"LineStart": 1, "SSCEXPEND": 1,
"SSCEXPEND_count": { "$size": "$SSCEXPEND" }
}
},
{
"$match": {
"SSCEXPEND_count": { "$gte": 2 }
}
}
])

样本输出:

/* 0 */
{
"result" : [
{
"_id" : "201503110040020021",
"Line" : "1",
"LineStart" : ISODate("2015-03-11T06:49:35.000Z"),
"SSCEXPEND" : [
{
"Secuence" : 10,
"Title" : 1
},
{
"Secuence" : 183,
"Title" : 613
}
],
"SSCEXPEND_count" : 2
}
],
"ok" : 1
}

关于MongoDB 投影计数大于 2 的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33666685/

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