2017-06-05 147 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

  • $放松操作者分割的阵列字段到单独的文件为
    阵列的每个值。

  • $项目操作员限制字段返回结果。