2017-02-15 77 views
2

db.doc.find({},{"sections.rows.Desk":1})返回辦公桌名單,但還空行即其中desk屬性不按行排列存在...篩選子文件陣列

我想消除空的結果。如何去做呢?

謝謝!

我的文檔「doc」具有以下格式。 「文檔」: {

"sections" : [ 
     { 
      "name" : "Request Details", 
      "rows" : [ 
       { 
        "Desk" : "IT4" 
       } 
      ] 
     }, 
     { 
      "name" : "Approval", 
      "rows" : [ 
       { 
        "Approval" : "" 
       } 
      ] 
     } 
    ] 
} 

回答

1

你將不得不使用聚合框架,特別是$unwind操作員能對查詢單獨的數組元素,讓你在以後的人。目前在.find的作品中,如果它符合您的查詢,您將獲得整個文檔。

db.docs.aggregate({$unwind: "$sections"}, {$match: {"sections.rows.Desk": {$exists: 1}}}); 
+0

這有效......感謝爆炸! $ unwind很酷。 我目前的工作是在原型階段,數據模型可能會深入嵌套和更復雜。關於資源/書籍的任何建議,我可以詳細瞭解如何查詢複雜文檔? – Vin

+0

@Vin不是真的,只是練習很多。我認爲該手冊是一個很好的資源:https://docs.mongodb.com/manual/但它顯然是非常密集的,因爲文檔手冊會是這樣,你不能只是通讀它,但它是一個很好的資源,如果你正在尋找具體細節。 –