2017-06-05 160 views
-1

我是Mongodb的新手,試圖從集合中獲取數據,首先我需要從下面的示例中獲取數組「1」的所有值,而不傳遞任何數組的值,然後獲取數據在Json格式中,它將通過遊標發送到客戶端,toArray函數適用於控制檯,但不適用於html頁面。MongoDB查詢數組元素

代碼:

"_id" : ObjectId("5934f65bdab27e02aa954891"),"tracker" : [ 
    { 

     "1" : [ 
      "open", 
      "isnot", 
      "closed", 
      "any" 
     ], 
     "2" : [ 
      "task", 
      "user story", 
      "bug", 
      "support", 
      "feature", 
      "ui modification", 
      "enhancment", 
      "use case" 
     ] 
    } 
], 
"subject" : [ 
    { 
     "1" : [ 
      "contains", 
      "doesnot contain", 
      "none", 
      "any" 
     ] 
    } 
]} 

預期OUTPUT_1(數組 「1」 的值): 「開放式」, 「IsNot運算」, 「關閉」, 「任何」

預期Output_2(JSON格式)

"tracker" : [ 
{ 
    "1" : [ 
     "open", 
     "isnot", 
     "closed", 
     "any" 
    ], 
    "2" : [ 
     "task", 
     "user story", 
     "bug", 
     "support", 
     "feature", 
     "ui modification", 
     "enhancment", 
     "use case" 
    ] 
}],"subject" : [ 
{ 
    "1" : [ 
     "contains", 
     "doesnot contain", 
     "none", 
     "any" 
    ] 
}]} 
+1

由於您不知道語法,因此可能最好的方法是展示您希望「查詢」的結果在這裏。還要說明這應該來自「單個」文檔還是來自「許多」。 –

+0

這是JSON不是「傑森」。並且您被要求[編輯](https://stackoverflow.com/posts/44366843/edit)您的問題,並向我們展示您期望的文檔的輸出格式。 –

回答

1
db.details.aggregate(

    // Pipeline 
    [ 
     // Stage 1 
     { 
      $match: {"_id" : ObjectId("5934f65bdab27e02aa954891")} 
     }, 

     // Stage 2 
     { 
      $unwind: "$tracker" 
     }, 

     // Stage 3 
     { 
      $project: { 
       'tracker.1':1 
      } 
     }, 

    ] 
); 

以上聚集查詢管道依次執行以下的聚集階段

  • $匹配運算符濾波器文件僅選擇文件,其中_id字段的值 相當於特定對象ID

  • $放鬆操作者分割的陣列字段到單獨的文件爲
    陣列的每個值。

  • $項目操作員限制字段返回結果。