作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 mongodb 中,我有一个包含单个文档的集合,如下所示:
{
"_id" : ObjectId("5552b7fd9e8c7572e36e39df"),
"StackSummaries" : [
{
"StackId" : "arn:aws:cloudformation:ap-southeast-2:406119630047:stack/XXXX-30fb22a-285-439ee279-c7c8d36/4ebd8770-f8f4-11e4-bf36-503f2370240f",
"TemplateDescription" : "XXXX",
"StackStatusReason" : "",
"CreationTime" : "2015-05-12T22:14:50.535Z",
"StackName" : "XXXX",
"StackStatus" : "CREATE_COMPLETE"
},
{
"TemplateDescription" : "XXXX",
"StackStatusReason" : "",
"CreationTime" : "2015-05-11T04:02:05.543Z",
"StackName" : "XXXX",
"StackStatus" : "DELETE_COMPLETE",
"StackId" : "arn:aws:cloudformation:ap-southeast-2:406119630047:stack/XXXXX/7c8d04e0-f792-11e4-bb12-506726f15f9a"
},
{ ... },
{ many others }
]
}
即aws cli命令的导入结果 aws cloudformation
列表堆栈
我正在尝试查找 StackSummaries
数组中具有 CREATE_COMPLETE
或 UPDATE_COMPLETE
的 StackStatus
的项目>。经过多次试验和阅读其他 SO 帖子后,我得出以下结论:
db.cf_list_stacks.aggregate( {$match: {"StackSummaries.StackStatus": "CREATE_COMPLETE"}})
然而,这仍然会返回整个文档(我什至不担心 UPDATE_COMPLETE)。
我有 SQL 背景,并且正在努力处理像这样的简单查询。关于如何获取我正在寻找的信息的任何想法?
我看过的 SO 帖子:
更新
关于我在理解这个主题时学到的东西的注释:
最佳答案
如果你只想要 StackSummaries 数组中的对象,你应该使用 $unwind
子句来扩展数组,过滤你想要的文档,然后只投影文档中你实际需要的部分想要。
查询看起来像这样:
db.cf_list_stacks.aggregate([
{ '$unwind' : '$StackSummaries' },
{ '$match' : { 'StackSummaries.StackStatus' : 'CREATE_COMPLETE' } },
{ '$project' : {
'TemplateDescription' : '$StackSummaries.TemplateDescription',
'StackStatusReason' : '$StackSummaries.StackStatusReason',
...
} }
])
有用的链接:
关于mongodb - 如何在 mongodb 查询中过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30207005/
我是一名优秀的程序员,十分优秀!