作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个查询,需要按 ID 查找文档,然后我只需要返回数组中符合特定条件的项目。
在下面的代码中,您将看到我只需要通过 ID“匹配”一个文档,然后我将“限制”设置为一个(应该只有一个)。这是我真的很困惑......然后我“展开” fragments 字段,它是数组,数组内是子文档。我需要通过其中的数组的最后一项过滤掉这些子文档,因此我“转换”了 assignments_array 的“切片”。这是我只需要 assignments_array
为 EMPTY 或 assignment_history.to
为空的文档
db.getCollection('territories').aggregate([
{
"$match": {
"congregation": ObjectId("5c68c706f1f52047f08862b3")
}
},
{
"$limit": 1
},
{
$unwind: {
path: "$fragments"
}
},
{
$project: {
"fragments.number": 1,
"fragments.assignment_history": {"$slice": ["$fragments.assignment_history", -1]}
}
}
这让我得到了这个结果......
{
"_id": ObjectId("5c68c706f1f52047f08862b6"),
"fragments": {
"number": 1,
"assignment_history": [{
"to": ObjectId("5c68c706f1f52047f08862b4"),
"on": 1550370567067
}]
}
}
{
"_id": ObjectId("5c68c706f1f52047f08862b6"),
"fragments": {
"number": 2,
"assignment_history": []
}
}
{
"_id": ObjectId("5c68c706f1f52047f08862b6"),
"fragments": {
"number": 3,
"assignment_history": [{
"to": null,
"on": 1550370567067
}]
}
}
我需要以 2 个对象结束,其中 assignment_history.to
为 null,而 assignment_history
没有项目/长度。
最佳答案
您可以在 $unwind
之后再使用一个 $match
条件
db.getCollection('territories').aggregate([
{ "$match": { "congregation": ObjectId("5c68c706f1f52047f08862b3") }},
{ "$limit": 1 },
{ "$unwind": { "path": "$fragments" }},
{ "$match": {
"$or": [
{ "fragments.assignment_history.to": null },
{ "fragments.assignment_history.to": { "$exists": false }}
]
}},
{ "$project": {
"fragments.number": 1,
"fragments.assignment_history": { "$slice": ["$fragments.assignment_history", -1] }
}}
])
关于javascript - 如何使用 mongo 聚合遍历数组并返回所需的文档?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54735203/
我是一名优秀的程序员,十分优秀!