db.doc.find({},{"sections.rows.Desk":1})
返回办公桌列表,但也是空行,即行数组中不存在desk属性...
我想消除空洞的结果。怎么去呢?
谢谢!
我的文档“doc”具有以下格式。 “文档”: {
"sections" : [
{
"name" : "Request Details",
"rows" : [
{
"Desk" : "IT4"
}
]
},
{
"name" : "Approval",
"rows" : [
{
"Approval" : ""
}
]
}
]
}
答案 0 :(得分:1)
您必须使用聚合框架,尤其是$unwind
运算符,才能查询单个数组元素并获取您所追求的元素。目前,.find
的工作方式与整个文档匹配时,您将获得整个文档。
db.docs.aggregate({$unwind: "$sections"}, {$match: {"sections.rows.Desk": {$exists: 1}}});